(57)【要約】  自動提案リスト入力に手書き入力を使用するプロセス及びシステムが記載される。手書き入力はテキストとして認識され、認識に基づいて提案された結果のリストを提供する自動提案リスト・プロバイダに転送される。
2008537270.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ入力を受信するコンピュータ実施方法であって、
手書き入力を受信するステップと、
前記ユーザ入力を自動提案リストと統合するステップと
を含む方法。
【請求項２】
前記自動提案リストがブラウザの一部分である、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記自動提案リストがオペレーティング・システムの一部分である、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記自動提案リストがアプリケーションの一部分である、請求項１に記載のコンピュータ実施方法。
【請求項５】
自動完成プロバイダ・プロセス及びタブレット入力パネル・プロセスを更に含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
自動完成リストを表示するコンピューティング・システムであって、
テキストを受信する第１のユーザ・インターフェイスと、
認識されたテキストとして認識される手書きインクを受信する第２のユーザ・インターフェイスと、
前記認識されたテキストに基づく提案された完成のリストを有する第３のユーザ・インターフェイスであって、前記リストのユーザ選択を受信し、前記ユーザ選択が前記第１のユーザ・インターフェイスに転送される第３のユーザ・インターフェイスと
を含むコンピューティング・システム。
【請求項７】
前記ユーザ選択を第１のユーザ・インターフェイスに転送する前記ステップが、自動完成リスト・プロバイダが前記ユーザ選択を前記第１のユーザ・インターフェイスをホストしているアプリケーションに送信することによって起こる、請求項６に記載のコンピューティング・システム。
【請求項８】
前記ユーザ選択を第１のユーザ・インターフェイスに転送する前記ステップが、前記第１のユーザ・インターフェイスをホストしているアプリケーションに前記ユーザ選択を転送する前に、自動完成リスト・プロバイダが前記ユーザ選択のユーザ変更を可能にする手書き受信パネルに前記ユーザ選択を送信することによって起こる、請求項６に記載のコンピューティング・システム。
【請求項９】
ユーザ入力を受信するコンピュータ・システムであって、
手書き入力を受信する手段と、
前記ユーザ入力を自動提案リストと統合する手段と
を含むコンピュータ・システム。
【請求項１０】
前記自動提案リストがブラウザの一部分である、請求項９に記載のコンピュータ・システム。
【請求項１１】
前記自動提案リストがオペレーティング・システムの一部分である、請求項９に記載のコンピュータ・システム。
【請求項１２】
前記自動提案リストがアプリケーションの一部分である、請求項９に記載のコンピュータ・システム。
【請求項１３】
自動完成プロバイダ・プロセス及びタブレット入力パネル・プロセスを更に含む、請求項９に記載のコンピュータ・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
自動提案リストは、現在、ユーザ・インターフェイスで使用されている。例えば、ユーザがインターネット・ブラウザのアドレスバーに情報を入力すると、ユーザの入力を完成させる提案がユーザに提示される。こうしたタイプのシステムでは、ユーザは、アドレス入力フィールドに「ｗｗｗ」と入力し始め、前に訪れたＷｅｂサイトを含む又は含まない以下の可能な選択肢が提示され得る。
【０００２】
ｈｔｔｐ：／／ｗｗｗ．
ｈｔｔｐｓ：／／ｗｗｗ．
ｆｔｐ：／／ｗｗｗ．
ｗｗｗ．ｃｎｎ．ｃｏｍ
ｗｗｗ．ｍｓｎｂｃ．ｃｏｍ
・・・。
【０００３】
自動提案リストの使用の１つの利点は、フィールドにすでに入力された情報の提案された完成をユーザに提供するその機能である。自動提案リストは、１）前の入力又は２）予想される入力のうちの少なくとも１つに基づいて、内容の提案を提供する。
【０００４】
従来の自動提案リストは役に立つが、テキストベースの入力システムに制限されており、つまり、キーボード入力のみに反応する。従来のシステムは手書き入力に反応しないため、ペンベースのコンピューティング・システムを使用するユーザは、自動提案リストの使用に制限を受ける。
【０００５】
発明の簡単な概要
本発明の態様は上述した問題の１つ又は複数に対処し、それによって、手書き入力に関する改良された自動提案機能を提供する。本発明の態様によって、ユーザは、手書き情報を入力し又は入力を開始することができ、それに応答してシステムに自動提案内容を提供させることができるようになる。
【０００６】
本発明は、一例として示されており、添付の図面に制限されるものではない。
【０００７】
発明の詳細な説明
本発明の態様は、ユーザの手書き入力に応答して自動提案情報を提供することに関する。自動提案情報は、使用されているアプリケーションによって異なり得る。以下の説明において、要素間の様々な接続が記載されていることに留意されたい。一般に、特に明記しない限り、これらの接続は直接的又は間接的なものとすることができ、本明細書は、この点に関して制限的ではないことに留意されたい。
【０００８】
概要
手書き電子インクは、ますますコンピュータユーザに普及しつつある。受け入れの増加にも関わらず、入力形式としての手書きには欠点がある。重要なことは、手書き認識は常に完全であるとは限らないということである。ユーザが或ることを書くつもりであることと、その手書きが別のものとして認識されることとの間の乖離は、ユーザ経験を失わせる。認識の失敗を克服しようとして、ユーザは、（実際の又は表示されたキーボード上での）入力に切り替え、又は手書きインクを書き換えようとする。当然のことながら、ユーザは、機能へのアプリケーション要求テキストベース入力を制御するためのスタイラスの使用にフラストレーションを感じるようになる。
【０００９】
本発明の態様は、手書き受信パネルと自動完成プロセスとの間のインターフェイスを提供することに関する。ここで、本発明の一例では、アプリケーションは、ユーザ入力を必要とするユーザ・インターフェイスを有する。ユーザ、アプリケーション又はオペレーティング・システムは、ユーザの手書きを受け入れるように、手書き受信パネルを呼び出すことができる。手書き受信パネルは、テキストを認識し、認識されたテキストを自動完成プロセスに転送することができ、自動完成プロセスは、それが受信した情報に基づいて提案内容を決定し、ユーザ入力を待つ。ユーザは、自動完成プロセスから１つの提案を選択することができ、次いで、選択はアプリケーションに転送される。或いは、ユーザは、より多くの情報を手書き受信パネルに追加することができ、ここで情報が認識され、自動完成プロセスは手書き受信パネルからの情報に基づいて提案を提供する。
【００１０】
本発明の他の態様では、手書き入力パネル及び自動完成プロセスは、ユーザが新しい情報を選択し及び／又は手書き受信パネルに追加するにつれて、相互に情報を交換することができる。
【００１１】
或る状況では、ユーザは、以前認識された、つまり（メモリ内に存在するものとして）以前ナビゲートされた情報を利用し、又は、入力情報に対して予め定義されている構造を利用することができる。本発明のこれら及び他の態様について、本明細書で説明する。
【００１２】
インクの特徴
インクペンを使用するユーザにはわかるように、物理的インク（インク筒を備えるペンを使用して紙に書き記される種類）は、線セグメントによって結ばれた一連の座標より多くの情報を伝え得る。例えば、物理的インクは、（インクの濃度による）ペンの圧力、（直線又は曲線セグメントの形状、及び目立たない点の周りのインクの挙動による）ペンの角度、及び（直線性、線の幅、及び直線及び曲線を通じた線の幅の変化による）ペン先の速度を反映することができる。別の例は、紙の繊維又はインクを乗せる他の面にインクが吸収される方法などがある。これらのわずかな特徴も、上述した特性を伝えるのを助ける。これらの追加の特性の故に、点の間の一定の線幅によるよりも瞬時に感情、人格、強調などを伝えることができる。
【００１３】
電子インク（又はインク）は、ユーザがスタイラスをベースとする入力装置を使用するときに捕捉される電子情報の捕捉及び表示に関連する。電子インクはストロークのシーケンス又は任意の集まりを指し、各ストロークは一連の点から成る。ストロークは同時に引かれ又は収集され、又は、別の時と場所で別の理由から引かれた又は収集され得る。点は、デカルト座標（Ｘ，Ｙ）、極座標（ｒ，Θ）、及び、当該分野で知られている他の技術を含む様々な既知の技術を使用して表され得る。電子インクは、圧力、角度、速度、色、スタイラスのサイズ、及びインクの不透明度を含む実際のインクの特性の表現を含み得る。電子インクは、数ある情報の中でも、ページにインクを乗せた順序（ほとんどの西洋言語の場合、左から右へ、次いで下へのラスタパターン）、タイムスタンプ（インクを乗せたときを示す）、インクの筆者の印、及び発信装置（インクが引かれたマシンの識別、又はインクを乗せるのに使用されるペンの識別のうち少なくとも１つ）を含む、更に他の特性を含み得る。
【００１４】
上述した特徴の中で、ストロークの時間的順序、及びストロークが一連の座標であることが主に使用される。他のすべての特徴を使用することもできる。
【００１５】
【表１】
2008537270.tif 000003
【００１６】
2008537270.tif 000004
【００１７】
汎用コンピューティング環境
図１は、本発明を実施できる好適なコンピューティング・システム環境１００の例を示している。コンピューティング・システム環境１００は好適なコンピューティング環境の一例にすぎず、本発明の使用又は機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、動作環境１００の例に示す構成要素のいずれか１つ又はその組合に関する任意の依存性又は要件を有しているものと解釈すべきではない。
【００１８】
本発明は、他の多くの汎用又は専用コンピューティング・システム環境又は構成で動作可能である。本発明との使用に適した周知のコンピューティング・システム、環境及び／又は構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサをベースとするシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステム又は装置を含む分散コンピューティング環境などを含むが、これらに限定されるものではない。
【００１９】
本発明は、コンピュータによって実行されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム・モジュールを、メモリ記憶装置を含むローカル及びリモートのコンピュータ記憶媒体に置くことができる。
【００２０】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、処理ユニット１２０、システムメモリ１３０、及び、システムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含み得るが、それだけに限定されるものではない。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用する、メモリバス又はメモリコントローラ、周辺バス及びローカルバスを含む若干のタイプのバス構造のうちの任意のものでよい。こうしたアーキテクチャは、一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、及びメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどを含むが、それだけに限定されるものではない。
【００２１】
コンピュータ１１０は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性及び不揮発性媒体、取外し可能及び取外し不可能媒体を含む。コンピュータ可読媒体は、一例として、コンピュータ記憶媒体及び通信媒体を含み得るが、それだけに限定されるものではない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、他のデータなど、情報を記憶するための任意の方法又は技術で実施される揮発性及び不揮発性の取外し可能及び取外し不可能な媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などを含むが、それらに限定されるものではない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラム・モジュール又は他のデータを搬送波又は他の移送機構などの変調されたデータ信号に組み込み、任意の情報配送媒体を含む。「変調されたデータ信号」という用語は、信号に情報を符号化するように１つ又は複数のその特性が設定又は変更された信号を意味する。通信媒体は、一例として、有線ネットワーク、直接配線された接続などの有線媒体、及び音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体を含むが、それらに限定されるものではない。また、上記の任意の組み合わせもコンピュータ可読媒体の範囲内に含まれるものとする。
【００２２】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性及び／又は不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納される。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能なデータ及び／又はプログラム・モジュール、及び／又は処理ユニット１２０により現在処理されているデータ及び／又はプログラム・モジュールを含む。図１は、一例として、オペレーティング・システム１３４、アプリケーションプログラム１３５、他のプログラム・モジュール１３６及びプログラム・データ１３７を示しているが、それらに限定されるものではない。
【００２３】
また、コンピュータ１１０は、他の取外し可能／取外し不可能で揮発性／不揮発性のコンピュータ記憶媒体を含み得る。一例にすぎないが、図１は、取外し不可能な不揮発性磁気媒体から読み取り又は書き込むハードディスク・ドライブ１４１、取外し可能な不揮発性磁気ディスク１５２から読み取り又は書き込む磁気ディスク・ドライブ１５１、及び、ＣＤ−ＲＯＭや他の光媒体などの取外し可能な不揮発性光ディスク１５６から読み取り又は書き込む光ディスク・ドライブ１５５を示している。動作環境の例で使用できる他の取外し可能／取外し不可能な揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどを含むが、それだけに限定されるものではない。ハードディスク・ドライブ１４１は一般に、インターフェイス１４０などの取外し不可能メモリインターフェイスを介してシステムバス１２１に接続され、磁気ディスク・ドライブ１５１及び光ディスク・ドライブ１５５は一般に、インターフェイス１５０などの取外し可能メモリインターフェイスによってシステムバス１２１に接続される。
【００２４】
上述し、図１に示したドライブ及びその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及びコンピュータ１１０の他のデータの記憶域を提供する。図１では例えば、ハードディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６及びプログラム・データ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６及びプログラム・データ１３７と同じであっても、異なっていてもよいことに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６及びプログラム・データ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６や、一般にマウス、トラックボール又はタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介して、コマンド及び情報をコンピュータ２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これら及び他の入力装置はしばしば、システムバスに結合されているユーザ入力インターフェイス１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェイス及びバス構造で接続してもよい。モニタ１９１又は他のタイプの表示装置もまた、ビデオ・インターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続される。コンピュータは、モニタに加えて、出力周辺インターフェイス１９５を介して接続できるスピーカ１９７、プリンタ１９６などの他の周辺出力装置を含むこともできる。
【００２５】
コンピュータ１１０は、リモートコンピュータ１８０などの１つ又は複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置又は他の一般のネットワークノードでよく、一般にコンピュータ１１０に関連して上述した多くの又はすべての要素を含むが、図１にはメモリ記憶装置１８１のみを示している。図１に示した論理接続はローカルエリアネットワーク（ＬＡＮ）１７１及び広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット及びインターネットではごく一般的である。
【００２６】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワーク・インターフェイス又はアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は一般に、モデム１７２や、インターネットなどの、ＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は内蔵でも外付けでもよく、ユーザ入力インターフェイス１６０又は他の適切な機構を介してシステムバス１２１に接続される。ネットワーク化された環境では、コンピュータ１１０に関連して示したプログラム・モジュール又はその一部を、リモートメモリ記憶装置に格納することができる。図１は、一例として、リモート・アプリケーション・プログラム１８５をメモリ装置１８１上に存在するものとして示しているが、それに限定されるものではない。図示されたネットワーク接続は例であり、理解されるように、コンピュータ間の通信リンクを確立する他の手段が使用されてもよい。
【００２７】
いくつかの態様では、手書きの入力をデジタル捕捉するためにペン・デジタイザ１６５及び付属のペン又はスタイラス１６６が設けられる。ペン・デジタイザ１６５とユーザ入力インターフェイス１６０との間の直接接続が示されているが、実際には、ペン・デジタイザ１６５は、無線を含む任意の技術によって、パラレルポート又は他のインターフェイス及びシステムバス１３０を介して処理ユニット１１０に直接結合され得る。また、ペン１６６はカメラが付いていてもよく、カメラによって捕捉された画像情報を、バス１３０と対話するインターフェイスに無線で送信する送受信機を有していてもよい。更に、ペンは、カメラに加えて又はカメラの代わりに、加速度計、磁力計、ジャイロスコープを含む、電子インクのストロークを決定するための他の感知システムを有していてもよい。
【００２８】
理解されるように、図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用することができる。ＴＣＰ／ＩＰ、イーサネット（登録商標）、ＦＴＰ、ＨＴＴＰなど様々なよく知られている任意のプロトコルの存在が想定され、システムは、ユーザがウェブベースのサーバからウェブページを取り出すことができるようにクライアント−サーバ構成で動作することができる。様々な従来のウェブブラウザの任意のものを使用してウェブページにおいてデータを表示し、それを操作することができる。
【００２９】
プログラミング・インターフェイス（又は、より簡単にインターフェイス）は、１つ又は複数のコードセグメントが１つ又は複数の他のコードセグメントによって提供される機能と通信し、又はそれにアクセスできるようにするための任意の機構、プロセス、プロトコルと見なされる。或いは、プログラミング・インターフェイスは、他の構成要素の１つ又は複数の機構、メソッド、関数呼出し、モジュールなどに通信結合することができるシステムの構成要素の１つ又は複数の機構、メソッド、関数呼出し、モジュール、オブジェクトなどと見なされる。上記の文の「コードセグメント」という用語は、コードの１つ又は複数の命令又は行を含むものとし、例えば、適用される用語に関わらず、又はコードセグメントが別々にコンパイルされるか、コードセグメントがソースコードとして提供されるか、中間コードとして提供されるか、オブジェクトコードとして提供されるか、コードセグメントがランタイムシステムで使用されるか、ランタイムプロセスで使用されるか、コードセグメントが同じマシンにあるか、異なるマシンにあるか、複数のマシンにわたって分散されるか、コードセグメントによって表される機能がすべてソフトウェアに実装されるか、すべてハードウェアに実装されるか、ハードウェアとソフトウェアとの組み合わせに実装されるかに関わらず、コードモジュール、オブジェクト、サブルーチン、関数などを含む。
【００３０】
概念上、図１Ｂ又は図１Ｃに示されているように、プログラミング・インターフェイスを包括的に見ることができる。図１Ｂは、第１及び第２のコードセグメントが通信するチャネルとしてのインターフェイスであるインターフェイス１を示している。図１Ｃは、インターフェイスを、システムの第１及び第２のコードセグメントが媒体Ｍを介して通信できるようになるインターフェイス・オブジェクトＩ１、Ｉ２（第１及び第２のコードセグメントの一部分である場合もそうでない場合もある）を含むものとして示している。図１Ｃの表示では、インターフェイス・オブジェクトＩ１、Ｉ２を、同じシステムの個別のインターフェイスと見なすことができ、またオブジェクトＩ１、Ｉ２及び媒体Ｍがインターフェイスを含むと考えることもできる。図１Ｂ及び１Ｃは、双方向フローと、フローの各側のインターフェイスとを示しているが、いくつかの実装形態では、情報フローが一方向のみである（又は、後述されるように、情報フローなしの）場合やインターフェイス・オブジェクトが片側にしかない場合がある。限定ではないが、一例として、アプリケーション・プログラミング・インターフェイス（ＡＰＩ）、エントリポイント、メソッド、関数、サブルーチン、遠隔手続き呼出し及びコンポーネント・オブジェクト・モデル（ＣＯＭ）インターフェイスは、プログラミング・インターフェイスの定義内に含まれる。
【００３１】
こうしたプログラミング・インターフェイスの態様は、第１のコードセグメントが情報（ここでは「情報」はその最も幅広い意味に使用され、データ、コマンド、要求などを含む）を第２のコードセグメントに送信する方法、第２のコードセグメントが情報を受信する方法、並びに、情報の構造、シーケンス、構文、構成、方式、タイミング及び内容を含み得る。この点に関して、インターフェイスによって定義された方法で情報がトランスポートされる限り、媒体が有線か無線か、又はその組み合わせかに関わらず、基礎を成すトランスポート媒体自体はインターフェイスの操作に重要ではない。状況によっては、情報は従来の意味での一方向又は双方向に渡されない。これは、別の機構を介して行われたり（例えば、コードセグメント間の情報フローとは別のバッファ、ファイルなどにある情報）、又は、１つのコードセグメントが第２のコードセグメントによって実行される機能に単にアクセスする場合のように情報の転送が存在しなかったりするからである。これらの態様のいずれか又はすべては、例えばコードセグメントが疎結合又は密結合された構成におけるシステムの一部分であるかどうかに応じてなど、所与の状況において重要となり得るので、このリストは例示的で非制限的なものであると見なされるべきである。
【００３２】
プログラミング・インターフェイスのこの概念は当業者には知られており、本発明の上記の詳細な説明から明らかである。しかし、プログラミング・インターフェイスを実施する他の方法があり、明示的に除外されていない限り、これらも本明細書に記載された特許請求の範囲によって含まれるものとする。こうした他の方法は、図１Ｂ及び図１Ｃの単純化した図より高度又は複雑であるように見えるが、それにも関わらず、同様の機能を実施して、全部同じ結果を達成する。次に、プログラミング・インターフェイスのいくつかの例示的な代替の実装形態を簡単に説明する。
【００３３】
Ａ．要素分解
或るコードセグメントから別のコードセグメントへの通信は、通信を複数の別個の通信に分割することによって間接的に達成され得る。これは、図１Ｄ及び図１Ｅに概略的に示されている。図示されているように、いくつかのインターフェイスは、分割可能な機能の組として表され得る。したがって、図１Ｂ及び図１Ｃのインターフェイス機能は、単に数学的に２４すなわち２×２×３×２を提供し得るのと同じように分解されて、同じ結果を達成することができる。したがって、図１Ｄに示されているように、インターフェイスであるインターフェイス１によって提供される関数は、インターフェイスの通信を複数のインターフェイスであるインターフェイス１Ａ、インターフェイス１Ｂ、インターフェイス１Ｃなどに変換するように再分割されるが、同じ結果を達成する。図１Ｅに示されているように、インターフェイスＩ１によって提供される関数は、同じ結果を達成しながら、複数のインターフェイスＩ１ａ、Ｉ１ｂ、Ｉ１ｃなどに再分割される。同様に、第１のコードセグメントから情報を受信する第２のコードセグメントのインターフェイスＩ２は、複数のインターフェイスＩ２ａ、Ｉ２ｂ、Ｉ２ｃなどに分解される。分解するとき、第１のコードセグメントに含まれているインターフェイスの数は、第２のコードセグメントに含まれているインターフェイスの数に一致する必要はない。図１Ｄ及び図１Ｅのいずれの場合でも、インターフェイスであるインターフェイス１及びインターフェイスＩ１の機能に関する意図は、それぞれ図１Ｂ及び図１Ｃのように同じままである。また、分解が認識し難いように、インターフェイスの分解には、結合、可換及び他の数学的特性が後続し得る。例えば、演算の順序は重要ではないので、インターフェイスによって実行される関数は、インターフェイスに到達する前に、コード又はインターフェイスの別の部分によって十分に実行され得、又は、システムの個別の構成要素によって実行され得る。更に、プログラミング分野の当業者は、同じ結果を達成する異なる関数呼出しを行う様々な方法があることを理解できよう。
【００３４】
Ｂ．再定義
場合によっては、依然として意図した結果を達成しながら、プログラミング・インターフェイスのいくつかの態様（パラメータなど）を無視し、追加し又は再定義することができる。これは図１Ｆ及び図１Ｇに示されている。例えば、図１Ｂのインターフェイスであるインターフェイス１は、３つのパラメータ、すなわち入力、精度、出力を含み、第１のコードセグメントから第２のコードセグメントに発行される呼出しである関数呼出し「二乗（入力、精度、出力）」を含むと仮定する。図１Ｆに示されるように、所与のシナリオにおいて、中央のパラメータ精度が関係ないものである場合、これは、単に無視してもよく、又は、（この状況において）意味のないパラメータと置き換えてもよい。また、関係ない追加のパラメータを追加することもできる。いずれの場合でも、入力が第２のコードセグメントによって二乗された後、出力が戻される限り、二乗の機能を達成することができる。精度は、コンピューティング・システムの下流側の部分又は他の部分にとって重要なパラメータである可能性は大いにあるが、精度が二乗の計算の狭い目的に必要ないことが認識されると、置き換えられるか無視される。例えば、有効な精度値を渡す代わりに、結果に悪影響を与えることなく、誕生日などの意味のない値を渡すことができる。同様に、図１Ｇに示されるように、インターフェイスＩ１はインターフェイスＩ１’と置換され、パラメータを無視するよう又はインターフェイスに追加するように再定義される。同様に、インターフェイスＩ２はインターフェイスＩ２’として再定義される。すなわち、不要なパラメータ又はどこか別の場所で処理され得るパラメータを無視するように再定義される。ここでのポイントは、場合によっては、プログラミング・インターフェイスは、或る目的には必要とされない、パラメータなどの態様を含んでいてもよいことであり、それらは、無視され、再定義され、又は他の目的のために他の場所で処理されてもよい。
【００３５】
Ｃ．インライン・コーディング
２つの個別のコードモジュールの間の「インターフェイス」が形を変えるように、それらの機能の一部又はすべてを併合することも実行可能である。例えば、図１Ｂ及び図１Ｃの機能は、図１Ｈ及び図１Ｉの機能にそれぞれ変換され得る。図１Ｈでは、図１Ｂの以前の第１及び第２のコードセグメントは、それらの両方を含むモジュールに併合される。この場合、コードセグメントは依然として互いに通信しているが、インターフェイスは、単一のモジュールに一層適した形に適応される。したがって、例えば、正規のＣａｌｌ（呼出し）及びＲｅｔｕｒｎ（戻す）ステートメントは必要ではないが、インターフェイスであるインターフェイス１に従った同様の処理又は応答は依然として有効である。同様に、図１Ｉに示されているように、図１ＣからのインターフェイスＩ２の一部分（又はすべて）は、インターフェイスＩ１にインラインで書き込まれてインターフェイスＩ１”を形成する。図示されるように、インターフェイスＩ２はＩ２ａ及びＩ２ｂに分割され、インターフェイス部分Ｉ２ａはインターフェイスＩ１とインラインでコード化され、インターフェイスＩ１”を形成する。具体的な例として、図１ＣからのインターフェイスＩ１が関数呼出し「二乗（入力、出力）」を実行することを考察する。この関数呼び出しはインターフェイスＩ２によって受信され、第２のコードセグメントによって（入力の二乗を計算するために）入力で渡された値を処理した後、二乗された結果を出力に戻す。こうした場合、第２のコードセグメントによって実行される処理（入力の二乗）は、インターフェイスを呼出すことなく、第１のコードセグメントによって実行される。
【００３６】
Ｄ．分離
或るコードセグメントから別のコードセグメントへの通信は、通信を複数の別個の通信に分割することによって、間接的に達成され得る。これは図１Ｊ及び図１Ｋに概略的に示されている。図１Ｊに示されているように、コードのうちの１つ又は複数のピース（分離インターフェイス。これらは機能及び／又はインターフェイス関数を元のインターフェイスから分離する）は、異なるインターフェイス（この場合、インターフェイスであるインターフェイス２Ａ、インターフェイス２Ｂ及びインターフェイス２Ｃ）に適合するように、第１のインターフェイスであるインターフェイス１における通信を変換するために提供される。これが行われるのは、インターフェイス１プロトコルに従って例えばオペレーティング・システムと通信するように設計されたアプリケーションのインストール済みの基盤が存在するが、そのオペレーティング・システムは異なるインターフェイス（この場合、インターフェイス２Ａ、インターフェイス２Ｂ及びインターフェイス２Ｃ）を使用するように変更される場合などである。ポイントは、第１のコードセグメントによって使用されるインターフェイスと互換性がないように、第２のコードセグメントによって使用される元のインターフェイスが変更されることであり、したがって、新旧のインターフェイスに互換性を持たせるようにするための媒介が使用される。同様に、図１Ｋに示されているように、インターフェイスＩ１から通信を受信するための分離インターフェイスＤＩ１と、ＤＩ２と協働するが同じ関数結果を提供するように再設計される例えばインターフェイスＩ２ａ、Ｉ２ｂにインターフェイス機能を送信するための分離インターフェイスＤＩ２とを備える第３のコードセグメントが導入される。同様に、ＤＩ１及びＤＩ２は、同じ又は類似の関数結果を提供しながら、図ＩＣのインターフェイスＩ１及びＩ２の機能を新しいオペレーティング・システムへ移すために一緒に働く。
【００３７】
Ｅ．書き換え
更に別の考え得る変形は、コードを動的に書き換えて、インターフェイス機能を、同じ全結果を達成する別のものに置き換えることである。例えば、中間言語（例えばＭｉｃｒｏｓｏｆｔ  ＩＬ、Ｊａｖａ（登録商標）ＢｙｔｅＣｏｄｅ）で示されたコードセグメントが、実行環境（．Ｎｅｔ  ｆｒａｍｅｗｏｒｋ、Ｊａｖａ（登録商標）ランタイム環境又は他の類似のランタイム型の環境によって提供されるものなど）においてジャストインタイム（ＪＩＴ）コンパイラ又はインタプリタに提供されるシステムが存在する。ＪＩＴコンパイラは、第１のコードセグメントからの通信を第２のコードセグメントに動的に変換するように、すなわち、通信を、第２のコードセグメント（元の又は異なる第２のコードセグメント）によって必要とされる別のインターフェイスに適合するように書かれる。これは図１Ｌ及び図１Ｍに示されている。図１Ｌから分かるように、この手法は上述の分離シナリオと類似している。これが行われるのは、例えば、インターフェイス１プロトコルに従ってオペレーティング・システムと通信するように設計されたアプリケーションのインストール済みの基盤が存在するが、そのオペレーティング・システムは別のインターフェイスを使用するように変更された場合である。ＪＩＴコンパイラは、進行中の通信を、インストールされた基盤アプリケーションからオペレーティング・システムの新しいインターフェイスに適合させるために使用される。図１Ｍに示されているように、インターフェイスを動的に書き換えるこの手法は、インターフェイスを動的に分解する又は変更するために適用される。
【００３８】
また留意されるように、代替の実施の形態によりインターフェイスと同じ又は類似の結果を達成するための上述したシナリオは、様々な方法で、直列及び／又は並列に、或いは他の介在コードと結合され得る。したがって、上述した代替の実施の形態は相互に排他的ではなく、混合され、適合され、結合されて、図１Ｂ及び図１Ｃに図示された汎用のシナリオと同じ又は等価のシナリオを生成し得る。また留意されるように、ほとんどのプログラミング構文と同様に、本明細書に記載されてはいないが本発明の意図及び範囲によって表されているインターフェイスの同じ又は類似の機能を達成する他の類似の方法とが存在する。すなわち、インターフェイスの価値の基礎となるのは、少なくとも部分的には、インターフェイスによって表される機能と該インターフェイスによって可能になる有利な結果であることに留意されたい。
【００３９】
図２は、本発明の様々な態様に従って使用することができる例示的なタブレットＰＣ２０１を示す。図１のシステムにおける特徴、サブシステム及び機能のいずれか又はすべては、図２のコンピュータに含まれ得る。タブレットＰＣ２０１は、例えば、デジタル化するフラット・パネル・ディスプレイ、好ましくは液晶ディスプレイ（ＬＣＤ）画面などの、複数のウィンドウ２０３が表示される大型表示面２０２を含む。ユーザはスタイラス２０４を使用してデジタル化表示面２０２上で選択し、強調表示し及び／又は書くことができる。適したデジタル表示面２０２の例は、ムトウやＷａｃｏｍのペン・デジタイザなどの電磁的ペン・デジタイザを含む。光デジタイザなど他のタイプのペン・デジタイザも使用することができる。タブレットＰＣ２０１は、データを操作し、テキストを入力し、図を作成し及び／又はスプレッドシート、ワードプロセッシング・プログラムなど従来のコンピュータ・アプリケーション・タスクを実行するために、スタイラス２０４を使用して形成されたジェスチャを解釈する。
【００４０】
スタイラス２０４は、１つ又は複数のボタン又はその選択機能を増大させるための他の特徴を備える。一つの実施の形態では、スタイラス２０４は「鉛筆」又は「ペン」として実現することができ、その一端は書き込み部を構成し、他端は「消しゴム」端を構成し、表示を横切ると、表示の部分が消されるべきことを示す。マウス、トラックボールなどの他のタイプの入力装置を使用することができる。更に、ユーザ自身の指をスタイラス２０４とし、タッチセンシティブ又は近接センシティブ・ディスプレイ上に表示画像の部分を選択する又は示すために使用することができる。したがって、「ユーザ入力装置」という用語は、本明細書で使用するとき、広い定義を有するものとし、スタイラス２０４などの周知の入力装置の多くの変形を含む。領域２０５は、スタイラス２０４が表示面２０２に接触した場所をユーザが決定することができるようにするフィードバック領域又は接触領域を示す。
【００４１】
様々な実施の形態では、システムは、インク・プラットフォームを、アプリケーションがインクの捕捉、操作、格納のために使用することができる１組のＣＯＭ（コンポーネント・オブジェクト・モデル）サービスとして提供する。１つのサービスによって、アプリケーションは、インクの開示された表現を使用して、インクを読み書きすることができる。また、インク・プラットフォームは、拡張可能マークアップ言語（ＸＭＬ）のような言語を含むマークアップ言語を含み得る。更に、システムは、ＤＣＯＭを別の実装として使用することもできる。マイクロソフト社のＷｉｎ３２プログラミング・モデルや．Ｎｅｔプログラミング・モデルを含む、更に別の実装が使用されてもよい。
【００４２】
自動提案及び手書き入力
自動完成プロセス（自動提案プロセスとしても知られる）、最近使用された（ＭＲＵ）リスト及び最も頻繁に使用される（ＭＦＵ）リストは、人気のある機能であり、様々なオペレーティング・システム・シェルにおける多数のアプリケーションによって、また様々な分野において使用されている。こうしたリストの価値の１つは、これらのリストによってユーザが電子メール・アドレス、ＵＲＬ、ファイル名などの覚えるのが難しい不規則なテキストを入力することができる容易さを増大させることである。この価値は、手書きを使用して電子メール・アドレス、ＵＲＬ又はファイル名を入力しているユーザにとっては一層大きい。手書き認識は、一般的に、メール・アドレスなどの辞書外の単語の場合、最悪であり、これらのタイプのデータの入力プロセスを一層面倒にするからである。
【００４３】
本発明の態様は、様々なアプリケーションの自動提案（又は自動完成）を手書き入力と統合することに関する。この統合の故に、ユーザには、使用しやすさ、スループット速度、並びに、手書き入力及び対話中のアプリケーションに対するユーザ満足度が増すことが分かる。
【００４４】
図３は、本発明の態様の例を示している。ここで、アプリケーション３０１はユーザ・インターフェイス３０２を含む。ユーザは情報を入力する（ユーザ入力３０３）。アプリケーションは、ユーザ・インターフェイス３０２で表示するための情報を３０５で転送する入力ハンドラ３０４を含む。ユーザ入力情報はアプリケーション３０１又は手書き受信パネル３０７によって処理されることに留意されたい。ユーザは情報をアプリケーション３０１に必ずしも別々に入力する必要がないので、アプリケーション３０１への直接のユーザ入力３０３は破線で示されている。例えば、キーが限られている又はキーなしのスレート型タブレット又はペン・コンピューティング装置を使用する状況では、アプリケーション３０１はスタイラスに基づく情報を受け取り、又は、ユーザは手書き受信パネル３０７を使用して情報を入力するだけであり、それによって、アプリケーション３０１への情報の直接入力が回避される。
【００４５】
ユーザ又はアプリケーション３０１は、手書き受信パネル３０７を呼び出すことができる。手書き受信パネル３０７は、スタイラス及びデジタイザの対話によって作成される電子インクの形で少なくとも手書き入力を受信するインターフェイス及びプロセスを含む。手書き受信パネル３０７は、キーボード入力（実際の又は表示された）や、上記ソフトキーボードによるマウス入力、及び／又は、マウスを使用してユーザが描いたインクによるマウス入力を含む、他のタイプの情報を受信することもできることを理解されたい。手書き受信パネル３０７は能動的及び受動的なデジタイザとともに使用することができることを理解されたい。手書き受信パネル３０７は、ライン型入力（インクが描かれるガイドラインを表示する）、ボックス型入力（文字又は記号の入力ごとに個別の区切り領域を持つ）、キーボード入力（ソフトキーボード）、又は、一般的な空欄入力領域のうちの少なくとも１つを含む、様々なタイプの入力ディスプレイを含むが、それらに限定されるものではない。これらのオプションのうちの少なくとも一部を含む手書き受信パネル３０７の例には、ワシントン州レドモンドのマイクロソフト社のＴＩＰ（タブレット入力パネル）がある。
【００４６】
次いで、ユーザは手書き受信パネル３０７内に情報３０３（例えば、手書きインク）を入力する。手書き受信パネル３０７は入力情報３０３を認識しようとし、認識結果を３０８で自動完成プロバイダ３０９に転送する。手書き受信パネル３０７からの自動完成プロバイダ３０９への認識された情報転送に応答して、自動完成プロバイダ３０９はユーザに自動完成提案を提供する。次いで、ユーザは入力３１０を介して提案のうちの１つを選択し、選択はユーザ・インターフェイス３０２での表示のために３１１でアプリケーション３０１に転送される。選択が行われた後、自動完成プロバイダ３０９は提案のリストについてのユーザ・インターフェイスを閉じる。
【００４７】
本発明の態様は、自動完成プロバイダ３０９を、手書き受信パネル３０７から別個のものとして示している。本発明の代替の態様では、自動完成プロバイダ３０９は手書き受信パネル３０７に統合される。更に別の態様では、手書き受信パネル３０７は自動完成プロバイダ３０９に統合される。これら２つの後者の態様では、ユーザには、他方のユーザ・インターフェイスの制御を介して、手書き受信パネル３０７と自動完成プロバイダ３０９とのうちの一方を開く能力が提供される。
【００４８】
以下は、情報をユーザ・インターフェイスに転送するために、ユーザがどのように自動提案リストを使用するかの一例である。まず、ユーザは手書き受信パネル３０７に「ｗｗｗ」を入力することができる。次いで、自動完成プロバイダ３０９は、例えば
ｈｔｔｐ：／／ｗｗｗ．
ｈｔｔｐｓ：／／ｗｗｗ．
ｆｔｐ：／／ｗｗｗ．
を含む、提案された自動完成のリストを提供する。
【００４９】
ユーザは、情報を手書き受信パネル３０７に追加し続けても（この場合には、時間とともに自動完成リストにデータが読み込まれる）、自動完成リストから項目のうちの１つを選択してもよい。ユーザが自動完成リストの入力のうちの１つを選択すると、選択（又は選択が行われたことの指示）がアプリケーション３０１に送信され、ユーザ・インターフェイス３０２に表示される。ここでは、ユーザが自動完成リストから項目の１つを選択すると、手書き受信パネル３０７での内容はクリアされる。ユーザは、一層多くの情報を手書き受信パネル３０７に追加し続けて、新しく認識された情報を自動完成リストに渡し、提案された結果のユーザ選択をアプリケーション３０１に転送させる。
【００５０】
代替として、手書き受信パネル３０７と自動完成プロバイダ３０９は、ユーザが結果に満足するまで情報３０８、３１２を交換する。次に、手書き受信パネル３０７は、手書き受信パネル３０７と自動完成プロバイダ３０９との間の交換の結果を３１３でアプリケーション３０１に転送してユーザ・インターフェイス３０２に表示させる。一例として、「ｗｗｗ」の上記の入力を使用する。上記と同様に、ユーザは、手書き受信パネル３０７によって「ｗｗｗ」と認識される手書き情報３０３を入力する。自動完成プロバイダ３０９は、提案された完成のリスト（例えば、ｈｔｔｐ：／／ｗｗｗ．など）を提供する。ユーザがユーザ入力３１０を介して、提案された完成を選択すると、提案された完成はパス３１２を介して手書き受信パネル３０７に戻され、手書き受信パネル３０７での認識された結果は、選択された完成と置き換えられる。次いで、ユーザは追加情報を、手書き受信パネル３０７に存在する提案された完成に追加する。最後に、文字列が完成した後、ユーザは、ユーザ・インターフェイス３０２に表示するために、（手動で、又は文字列の定期的な自動転送の使用によって自動で）パス３１３を介してアプリケーション３０１に転送する。
【００５１】
最後に、更に別の代替として、アプリケーション３１４は、提案リストの初期情報として使用するために、ユーザ・インターフェイス３０２での情報を自動完成プロバイダ３０９に転送する。この初期情報は時として主要情報と呼ばれる。次いで、手書き受信パネル３０７からの認識結果３０８は、提案された内容を提供することによって、自動完成プロバイダ３０９が応答する情報として、ユーザ・インターフェイス３０２からの内容と結合される。次いで、自動完成プロバイダ３０９からの選択された提案は、上述されたパス（３１１、３１２、３１３）のうちのいずれかによってアプリケーション３０１に転送される。
【００５２】
手書き受信パネル３０７は自動完成プロセスを所有し、自動提案リストを描くことができる。或いは、手書き受信パネル３０７は、自動完成プロバイダ３０９から提供された自動提案リストの位置決めに影響を与える。これは、自動完成プロバイダ３０９のアプリケーション・プログラミング・インターフェイスを介して行われ得る。
【００５３】
図４は、入力フィールド４０２を含むアプリケーション４０１を示している。ユーザは、自動提案リスト４０４が手書き受信パネル４０３の近くに表示されている状態で、手書き受信パネル４０３を介して手書きインクを入力することができる。自動提案リストは、自動完成プロバイダ３０９によって生成されている。
【００５４】
自動提案リストに提供された情報はアプリケーションによって変わり得る。例えば、インターネット・ブラウザの場合、自動提案リストは、ＷＷＷアドレス又は最上位ドメイン識別子に関する情報を含み得る。電子メール・アドレスの場合、自動提案リストは、或る人の電子メールのアドレス帳からの電子メール・アドレスに関する情報を含み得る。
【００５５】
アプリケーションは、アプリケーションのテキスト・フィールドの代わりに、自動提案リストをＴＩＰに対して表示されるように再配置することができる。以下は、アプリケーションの自動提案リストをどのように配置するかについてのガイドラインを示す。
・ユーザの手の下に表示されないようにするために、自動提案リストは、画面の上端からはずれることなく収まることができるとき、手書き受信パネルの上端の上側に現れる。自動提案リストの下端は、手書き受信パネルの書き込み面の上端に接する。リストが手書き受信パネルの上に収まることができない場合、手書き受信パネルの下端の下側に配置される。この場合、自動提案リストの上端は、手書き受信パネルの書き込み面の下端に接する。
・手書き受信パネルがインクの複数行を含むように拡張されたとき、自動提案リストは、ユーザがインキングしている現在の行を基準にして位置することができる。この場合、自動提案リストは、行の上及び下を手書き受信パネルの上及び下であるかのように扱うことができる。或いは、自動提案リストは、インキングしている面の上又は下の行を基準にして常に現れる。
・自動提案リストは、手書き受信パネルでの第１の後続の空欄スペース上に左寄せされて現れる。手書き受信パネルのライン型バージョンでは、自動提案リストは、自動提案リストの左端が最後の行の最後のインク・オブジェクトの右端に位置合わせされた状態で表示される。ボックス型入力モードの自動提案リストでは、自動提案リストは、自動提案リストの左端が第１の後続の空ボックスの左端に位置合わせされた状態で表示される。いずれのスキンにおいても、画面の右端からはずれることなくリストが左に位置合わせされることができない場合、リストは画面の右端に対して位置合わせされる。
・自動提案リストが表示され、ユーザが自動提案リストの外側にペンを置くときは常に、自動提案リストは非表示とされる。
・手書き受信パネルに最後の単語への修正が行われるときはいつでも、自動提案リストは更新されて再表示される。
【００５６】
ユーザがハードキーボード又はソフトキーボードを使用するとき、アプリケーションの自動提案リストは、手書き受信パネルではなくテキスト入力フィールドを基準にして配置される。こうした場合、自動提案リストはデスクトップ上と同じに現れて機能する。或いは、ソフトキーボードが使用されるとき、自動提案リストはソフトウェアキーボードに対して配置され得る。ソフトキーボードの近くに自動提案リストを配置する利点の１つは、一方から他方へのナビゲーションに必要な動きが制限され、それによって、両方との対話がユーザにとって一層容易になることである。
【００５７】
自動提案リストは、認識が実行されて認識結果が更新された直後に表示される。手書き受信パネルのボックス型入力モードでは、自動提案リストは、各文字が認識された後に更新される。手書き受信パネルのライン型入力モードでは、自動提案リストは、セグメントが認識された後に更新される。
【００５８】
図５は、本発明の態様による構成要素間の様々な関係を示す。手書き受信パネル５０１は、状態マネージャ５０４と情報を交換する手書きウィンドウ・コントロール５０３を含む。状態マネージャ５０４は状態レポジトリ５０５に接続され、状態レポジトリ５０５はプログラマビリティ・マネージャに接続される。状態情報が送信され、結果が受信される。プログラマビリティ・マネージャ５０６は、状態情報を自動完成プロバイダ・プロセス５０２に送る。
【００５９】
自動完成プロバイダ・プロセス５０２は、状態マネージャ５０８及び自動完成クライアント５０９を備える手書き受信パネル・オブジェクト５０７を含む。自動完成クライアント５０９は自動完成プロバイダ５１０と情報を交換する。
【００６０】
ここで、手書き受信パネル５０１は自動完成プロバイダ５１０を呼び出し、認識結果を手書き受信パネル５０１から転送する。自動完成プロバイダ・プロセス５０２における自動完成プロバイダ５１０は、ユーザに表示するための内容を含む自動完成リストを生成する。
【００６１】
以下、アプリケーション又は手書き受信パネルが自動提案リスト及び入力情報にアクセスできるようにする可能なアプリケーション・プログラミング・インターフェイス定義について説明する。
【００６２】
自動完成クライアントは、自動完成プロバイダ５１０に公表される自動完成クライアント・インターフェイスを有する。
【００６３】
自動完成クライアント・インターフェイスは、自動完成クライアントに登録されるべき自動完成プロバイダを登録するアドバイス・プロバイダ・メソッドを含む。このメソッドは、自動完成クライアントに登録されるべき自動完成プロバイダ・インターフェイスへのポインタを含み得る。
【００６４】
同様に、自動完成クライアントは、自動完成クライアントから自動完成プロバイダ・インターフェイスを登録解除するアンアドバイス・プロバイダ・メソッドを含む。
【００６５】
また、２つの方法のうちの一方を実行することができるユーザ選択インターフェイスが存在する。第１に、情報がこのメソッドで転送されると、ユーザの選択は、追加の情報を添付するために、手書き受信パネルに戻される。第２に、情報がこのメソッドで転送されない場合、ユーザの選択は、ユーザが選択を行ったことを選択に通知するために使用される。
【００６６】
また、ＡＰＩは、自動提案リストを表示するための好ましい矩形の仕様を含む。メソッドは、プロバイダの好ましい位置及び自動完成リスト・ユーザ・インターフェイスのサイズを示す画面座標での矩形に対するポインタ、フォーカスされたフィールドの位置及びサイズを示す画面座標での矩形に対するポインタ、及び、手書き受信パネルの現在の状態及び自動完成リストによって指定された好ましい自動完成リスト位置及びサイズに基づいて自動完成クライアントによって変更された矩形に対するポインタを含む。
【００６７】
ＡＰＩは、ユーザ・インターフェイスを表示する要求を含む。これは、自動完成ＵＩを表示しようとするときに自動完成プロバイダが行う呼出しである。自動完成クライアントはプロバイダの好ましい矩形を変更し得る。
【００６８】
これは、自動完成ＵＩを表示しようとするときに自動完成プロバイダが行う呼出しである。
【００６９】
次に、自動完成プロバイダは以下のインターフェイスを含む：
自動完成リストを生成するために使用される処理待ちテキストを更新する更新処理待ちテキスト・メソッド。このテキストは、フォーカスされたフィールドにすでに挿入されているテキストを含まず、自動完成プロバイダは、自動完成リストを生成するために、現在のフィールド・テキスト及び選択を考慮に入れる責任がある。このメソッドは、自動完成リストが表示されるべき文字を指定することもできる。このメソッドは、自動完成リストＵＩを表示するようにプロバイダをトリガすることができる。
【００７０】
表示メソッドは、自動完成リストを表示又は非表示するために使用される。
【００７１】
以下の拡張は、本発明の態様とともに使用され又は使用されない。
【００７２】
アプリケーションは、手書き受信パネルに自動提案リストをテキストとして転送し、アプリケーションによって提供された自動提案値で埋められた手書き受信パネルを基準にした自動提案リストを手書き受信パネルに所有させ、描かせる。手書き受信パネルに描かれたリストは、再配置されたアプリケーション・リストと同様に浮き上り、又は手書き受信パネルＵＩに完全に統合される。或いは、自動提案リストは、再配置されるのではなく、その現在の位置のままとすることができる。更に、自動提案リストは、アプリケーション、オペレーティング・システム又はユーザによってどこにでも配置することができる。
【００７３】
アプリケーションに上位の認識結果のうちの２つ以上が渡され、アプリケーションに、異なる認識可能性に基づいて自動完成リストを生成させる。
【００７４】
自動完成されたＵＲＬ又は電子メール・アドレスと入力している辞書内単語（その単語を以前入力したかどうかに関わらず）との予測をユーザが単一のリストで取得するように、フィールドのための自動完成を散文テキスト予測と統合させる。その目的は、将来、現在の自動完成実装を一般のテキストに拡張することである。
【００７５】
ＵＲＬをパーツに構文解析し、又は、ユーザの親又は兄弟のアドレスにナビゲートするために使用することができるブロックを構築する。このメソッドを使用することによって、ユーザがｗｗｗ．ｃｎｎ．ｃｏｍ／ｃｕｒｒｅｎｔｎｅｗｓに行ったことがある場合には、ユーザが行ったことがないｗｗｗ．ｃｎｎ．ｃｏｍの自動完成を取得するのは親である。これは、ＩＡｕｔｏＣｏｍｐｌｅｔｅＲｅｓｕｌｔｓインターフェイスにＡｄｊｕｓｔＡｕｔｏＣｏｍｐｌｅｔｅＬｉｓｔメソッドを含ませることによって行い得る。このメソッドによって、手書き受信パネルは、アプリケーションが表示するリスト・エントリを変更することができた。追加情報が図６に示されており、以下の通りである。
【００７６】
ＡｄｊｕｓｔＡｕｔｏｃｏｍｐｌｅｔｅＬｉｓｔ（）は、ペン入力パネル・オブジェクトに対する自動完成リスト・プロバイダによって呼び出される。ペン入力パネル・オブジェクトは、このメソッドが呼び出されると、それ自体に保存される、確定されたボックス型ヒント・テキストを含む。このメソッド内で、デフォルトとして、ペン入力パネルは、確定されたヒント文字列の第１の出現を検索し、所与の自動完成文字列内のヒント・テキストを確定し、次のように自動完成文字列から確定されたヒント文字列をトリミングする：
・確定されたヒント・テキスト＝「ＡＡＡ」
・自動完成文字列＝「０００ＡＡＡＢＢＢＣＣＣ」
・確定されたヒント・テキストのトリム後の結果の文字列＝「ＢＢＢＣＣＣ」
・確定されたヒント・テキストの前の自動完成文字列の任意の部分（上記の例「０００」）もトリミングされる
・現在の入力範囲がＩＳ＿ＵＲＬに設定されるとき、トリミングは特定の方法で行われる。ＵＲＬの部分の定義は、図６に示すように提供される。
【００７７】
更に、自動完成リストは、以下のように、インターネット・アドレスに使用される。
【００７８】
プロトコル文字列は、「／／」が後続する文字列の部分である。
【００７９】
ホストコンピュータ名は、プロトコル文字列に後続し且つピリオドによって後続される文字列の部分である。
【００８０】
トップレベル・ドメイン名は、文字列内の任意のスラッシュ文字の前のピリオド文字に後続する文字列の最後の部分である。
【００８１】
ホストコンピュータ名及びトップレベル・ドメイン名が存在するとき、第２レベル・ドメイン名は、トップレベル・ドメイン名の左のピリオドで分けられた文字列の部分である。ホストコンピュータ名とトップレベル・ドメイン名との間のピリオド文字によって分けられた部分の複数のセグメントがある場合、それらは、第２レベル以上のドメイン名として扱われる。ボックス型スキンは第２レベル以上のドメイン名を区別せず、これらは１つの部分として扱われる。
【００８２】
トップレベル・ドメインがある場合、
・ファイル名は、プロトコル分離文字の後の最後のスラッシュ文字に後続する文字列の部分である
・ファイル名とプロトコル分離文字の後の第１のスラッシュ文字列との間の文字列の部分は、ディレクトリである。
【００８３】
トップレベル・ドメインがない場合、
・ファイル名は、最後のスラッシュ文字に続く文字列の部分である
・ディレクトリは、ファイル名とプロトコル分離文字との間の文字列の部分である
ボックス型入力モードは、文字列を以下の単位に切断する：
・プロトコル分離文字を含むプロトコル文字列
・次の分離文字を含むホストコンピュータ名
・次の分離文字を含むドメイン名
・ディレクトリ及びファイル名。
【００８４】
全自動完成文字列すべてが検査されて変更された後、ボックス型スキンはリストから任意の重複した項目を取り除く。
【００８５】
次に、システムは、表示文字列のインデックスを開始することができる。調整自動完成リストから戻されるべき全自動完成文字列内の開始文字インデックスは、デフォルトの自動完成リストとまったく同じ方法で決定される。それは、全文字列内の最初に出現した確定されたヒント・テキストの末尾である。
【００８６】
表示文字列の終了インデックスの場合、以下のステップは、戻される自動完成文字列における文字の終了位置を定義する：
ａ．ヒント・テキストが（プロトコル分離文字の第２のスラッシュを除く）全文字列におけるプロトコル分離文字の前で終わる場合、終了位置は、プロトコル分離文字を含むプロトコル文字列の末尾にある
ｂ．（ａ）が偽であり、ヒント・テキストが全文字列内のホストコンピュータ名に後続する分離文字の前で終わる場合、終了位置は、次の分離文字を含むホストコンピュータ名の末尾にある
ｃ．（ｂ）が偽であり、ヒント・テキストが全文字列内のトップレベル・ドメイン名に後続する分離文字の前で終わる場合、終了位置は、次の分離文字を含むトップレベル・ドメイン名の末尾にある
ｄ．（ｃ）が偽であり、ヒント・テキストが（ドメイン名とディレクトリ名との間の分離文字を含む）全文字列内のディレクトリ又はファイル名内で終わる場合、終了位置は、全文字列の末尾にある。
【００８７】
代替の手法において、自動完成プロバイダは、自動提案リストのレンダリングのすべてを管理することができる。例えば、自動完成プロバイダは、手書き受信パネルの位置の（他の表示された内容に対する相対又は絶対）位置の指示を受信し、手書き受信パネルの位置に基づいて自動提案リストを配置する。別の例では、自動完成プロバイダは、手書き入力パネルの位置の任意の指示を受信せず、自動提案リストを所定の位置（画面の片側の近く又は中心など）に配置し、或いは、自動提案リストを他の表示された内容の近くに（例えば、自動提案リストからの選択された内容が送られるアプリケーションのユーザ・インターフェイスから離れて、それに重ねて又はその上に）又は表示内容の上に配置する。
【００８８】
本発明を、その好ましい実例となる実施の形態に関して説明してきた。当業者には、請求項の範囲及び精神内の多数の他の実施の形態、変更形態及び変形形態が、本開示の検討から想起されよう。
【図面の簡単な説明】
【００８９】
【図１】本発明のいくつかの態様を実施することができる汎用デジタル・コンピューティング環境を示す概要図である。
【図１Ｂ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｃ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｄ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｅ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｆ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｇ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｈ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｉ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｊ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｋ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｌ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図１Ｍ】本発明の１つ又は複数の態様をサポートする汎用コンピュータ環境を示す図である。
【図２】本発明の態様によるペンベースのコンピューティング・システムの例を示す図である。
【図３】本発明の態様による、例示の構成要素間の対話を示す図である。
【図４】本発明の態様による自動提案リストの例を示す図である。
【図５】本発明の少なくとも１つの態様において対話する様々なオブジェクトを示す図である。
【図６】本発明の態様による自動提案リストからの結果の別の例を示す図である。
【図７】アプリケーションと対話する従来の自動提案リストを示す図である。
【図１】
2008537270.tif 000005
【図１Ｂ】
2008537270.tif 000006
【図１Ｃ】
2008537270.tif 000007
【図１Ｄ】
2008537270.tif 000008
【図１Ｅ】
2008537270.tif 000009
【図１Ｆ】
2008537270.tif 000010
【図１Ｇ】
2008537270.tif 000011
【図１Ｈ】
2008537270.tif 000012
【図１Ｉ】
2008537270.tif 000013
【図１Ｊ】
2008537270.tif 000014
【図１Ｋ】
2008537270.tif 000015
【図１Ｌ】
2008537270.tif 000016
【図１Ｍ】
2008537270.tif 000017
【図２】
2008537270.tif 000018
【図３】
2008537270.tif 000019
【図４】
2008537270.tif 000020
【図５】
2008537270.tif 000021
【図６】
2008537270.tif 000022
【図７】
2008537270.tif 000023
【国際調査報告】
2008537270.tif 000024