(57)【特許請求の範囲】
【請求項１】
テキスト入力およびテキスト編集コマンド入力のうちの少なくとも一方を含むユーザ入力に対応するメッセージをメッセージ・キューに配置するステップと、
前記入力されたテキストの認識処理に対応するメッセージを順序づけられたメッセージとして前記メッセージ・キューに配置するステップと、
リアルタイムで処理されるべき前記メッセージ・キュー内のリアルタイム・メッセージと、ユーザ入力に同期した順序で処理されるべき前記メッセージ・キュー内の順序づけられたメッセージとを区別するステップと、
先行する全ての順序づけられたメッセージの処理の完了後にのみ各順序づけられたメッセージを処理することにより、順序づけられた前記メッセージをユーザ入力に同期した順序で処理するステップと、
順序づけられたメッセージの処理の完了を待っている間、前記リアルタイム・メッセージを処理するステップとを備え、
前記テキスト編集コマンド入力のうち、文字を削除するためのコマンド入力に対応するメッセージは、先行して入力されたテキストが認識されるまでは順序づけられたメッセージであり、前記テキストが認識されかつ該認識が終了したときは直ちに処理されることを特徴とするコンピュータ・システムにおけるユーザ入力を処理するための方法。
【請求項２】
請求項１に記載の方法において、
前記ユーザ入力は、手書き文字情報を含み、
前記手書き文字情報の認識処理に対応するメッセージは、順序づけられたメッセージとして前記メッセージ・キューに配置され、および
各順序づけられたメッセージを処理する前記ステップは、前記文字情報を手書き認識エンジンに提供し認識させるステップを含むことを特徴とする方法。
【請求項３】
請求項２に記載の方法において、
前記ユーザ入力は、物理的または仮想的キーボードからのキーストローク文字情報を含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法において、
前記ユーザ入力は、音声情報を含み、
前記音声情報の認識処理に対応するメッセージは、順序づけられたメッセージとして前記メッセージ・キューに配置され、および
各順序づけられたメッセージを処理するステップは、前記音声情報を音声認識エンジンへ提供し認識させるステップを含むことを特徴とする方法。
【請求項５】
請求項１に記載の方法において、
各順序づけられたメッセージを処理するステップは、前記先行する順序づけられたメッセージの処理の完了状態をポーリングするステップを含むことを特徴とする方法。
【請求項６】
請求項１に記載の方法において、
各順序づけられたメッセージを処理するステップは、前記先行する順序づけられたメッセージの処理の完了を示す情報を受信するステップを含むことを特徴とする方法。
【請求項７】
請求項１に記載の方法において、
前記ユーザ入力は、文字情報を入力するためのペン事象を含み、
文字情報を入力するための前記ペン事象に対応するメッセージは、前記メッセージ・キューにリアルタイム・メッセージとして配置され、および
前記リアルタイム・メッセージを処理するステップは、前記ペン事象に対応する表示の変更を生じさせるステップを含むことを特徴とする方法。
【請求項８】
請求項１に記載の方法を実施するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項９】
テキスト入力およびテキスト編集コマンド入力の少なくとも一方を含むユーザ入力をメッセージ・キューに配置する手段と、
リアルタイムで処理されるべきリアルタイム・メッセージと、ユーザ入力に同期した順序で処理されるべき順序づけられたメッセージとの間でメッセージを区別するための入力ハンドラとを備え、
前記入力ハンドラは先行する順序づけられたメッセージの完了を検知するための手段を含み、および
先行する全ての順序づけられたメッセージの処理の完了後にのみ各順序づけられたメッセージを処理することにより前記順序づけられたメッセージをユーザ入力に同期した順序で処理することをもたらし、および、順序づけられたメッセージの処理の完了を待っている間前記リアルタイム・メッセージを処理するための手段を更に含み、
前記テキスト編集コマンド入力のうち、文字を削除するためのコマンド入力に対応するメッセージは、先行して入力されたテキストが認識されるまでは順序づけられたメッセージであり、前記テキストが認識されかつ該認識が終了したときは直ちに処理されることを特徴とするコンピュータ・システムにおけるユーザ入力を処理するための装置。
【請求項１０】
請求項９に記載の装置において、
手書きの文字情報を入力するための手段を更に備え、
前記手書き文字情報の認識処理に対応するメッセージは、順序づけられたメッセージとして前記メッセージ・キューに配置され、および
手書き認識エンジンを更に備え、
各順序づけられたメッセージを処理することにより前記順序づけられたメッセージをユーザ入力に同期した順序で処理することをもたらす前記手段は、前記文字情報を前記手書き認識エンジンへ提供し認識させるための手段を含むことを特徴とする装置。
【請求項１１】
請求項９に記載の装置において、
物理的キーボードからキーストローク文字情報を入力するための手段を更に備えたことを特徴とする装置。
【請求項１２】
請求項９に記載の装置において、
仮想的キーボードからキーストローク文字情報を入力するための手段を更に備えたことを特徴とする装置。
【請求項１３】
請求項９に記載の装置において、
先行する順序づけられたメッセージの完了を検知するための前記手段は、文字情報の認識が完了したときに前記手書き認識エンジンにより状態がセットされるフラグを含むことを特徴とする装置。
【請求項１４】
請求項９に記載の装置において、
音声情報を入力するための手段を更に備え、
前記音声情報の認識処理に対応するメッセージは、順序づけられたメッセージとして前記メッセージ・キューに配置され、および
音声認識エンジンを更に備え、
各順序づけられたメッセージを処理することにより前記順序づけられたメッセージをユーザ入力に同期した順序で処理することをもたらすための前記手段は、前記音声情報を前記音声認識エンジンへ提供し認識させるための手段を含むことを特徴とする装置。
【請求項１５】
請求項９に記載の装置において、
前記ユーザ入力は、文字情報を入力するためのペン事象を含み、
文字情報を入力するための前記ペン事象に対応するメッセージは、前記メッセージ・キューにリアルタイム・メッセージとして配置され、および
前記リアルタイム・メッセージの少なくとも一部を処理する前記手段は、前記ペン事象に対応する表示の変更を生じさせる手段を含むことを特徴とする装置。
【請求項１６】
キーストローク入力に対応するメッセージ、手書き文字入力に関するペン事象メッセージを含むペン事象に対応するメッセージ、およびテキスト編集コマンド入力に対応するメッセージをメッセージ・キューに配置するステップと；
前記メッセージ・キューの中の前記メッセージから、ユーザが文字の入力を終了したかどうかを判断し、および前記文字の入力が終了したとき、前記文字に対応する情報を手書き認識エンジンに送るステップと；
前記手書き認識エンジンからの結果を待ち、当該結果を待っている間は、どのペン事象メッセージが手書き文字ストロークを書くことによって発生したかを判断し、前記手書き文字ストロークに対応した情報をディスプレイに出力することにより前記ペン事象メッセージだけを処理するステップと；
前記手書き認識エンジンからの結果を待っていない間は、前記メッセージ・キュー中の全てのメッセージを処理するステップとを備え、前記テキスト編集コマンド入力のうち、文字を削除するためのコマンド入力に対応するメッセージは、先行して入力された文字が認識されかつ該認識が終了したときに直ちに処理されることを特徴とするコンピュータ・システムにおけるユーザ入力を処理するための方法。
【請求項１７】
請求項１６に記載の方法を実施するための実行可能命令を有することを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１８】
リアルタイムで処理されるべきリアルタイム事象およびユーザ入力に同期した順序で処理されるべき順序づけられた事象に対応するメッセージを受信するためのメッセージ・キューと、
認識エンジンと、
出力装置と、
入力ハンドラとを備え、
前記入力ハンドラは前記メッセージ・キューを検査してその中の前記リアルタイム事象に対応するメッセージと前記順序づけられた事象に対応するメッセージとを区別し、少なくともテキストの認識に関する事象を前記認識エンジンに提供し、前記認識エンジンから認識結果を待っている間は、前記リアルタイム事象に対応するリアルタイム情報を前記出力装置に出力し、
前記ユーザ入力はテキスト入力およびテキスト編集コマンド入力の少なくとも一方を含み、前記テキスト編集コマンドのうち、文字を削除するためのコマンド入力は、先行して入力されたテキストが前記認識エンジンにより認識されていないときに順序づけられた事象として扱われ、前記テキストが認識されかつ該認識が終了したときは直ちに処理されることを特徴とするユーザ入力から出力を提供するシステム。
【請求項１９】
請求項１８に記載のシステムにおいて、前記ユーザ入力は手書き文字情報を含み、前記入力ハンドラは手書き文字データを前記認識エンジンに提供することを特徴とするシステム。
【請求項２０】
請求項１８に記載のシステムにおいて、前記ユーザ入力は音声情報を含み、前記入力ハンドラは音声データを前記認識エンジンに提供することを特徴とするシステム。
【発明の詳細な説明】
発明の分野
本発明は、一般には、コンピュータ・システムに関し、およびさらに詳細には、コンピュータ入力装置からコンピュータ・システムへのユーザ入力の処理のための方法および装置（ｍｅｃｈａｎｉｓｍ）に関する。
発明の背景
コンピュータ・ユーザは、キーボード、マウス、およびペン入力装置を含む、種々の入力装置からコンピュータに情報を入力する。ある種の入力の処理が他と比較して遅いときに、問題が発生する。特に、ペン装置を介して入力した手書きの文字を処理するとき、手書き認識（変換）処理は、ペンが発生させる（pen-initiated）他の種類のメッセージを含む他の種類の入力と比較して相対的にかなり長い時間を要する。実際に、１または２以上の文字が変換されている間、ユーザは待ち状態の文字または文字列に影響を与えることを意図する付加的情報を入力することができるが、他の処理を終わりにする場合もある。
一例として、もし、ユーザが、文字列“ＡＢＣ”を手書き入力エリアに書き、それから、（従来のキーボードを介するか、または、表示された仮想バックスペース・キーにペンで触ることにより）バックスペース・キーを入力したならば、“Ｃ”が処理される前に、バックスペース・キー・メッセージが受信され、処理される場合がある。もし、このタイミングの問題が、発生したならば、“Ｃ”文字ではなく、“Ｂ”文字が消去される。その理由は、情報は、入力された順序ではなく、処理された順序により取り扱われるからである。同様に、もし、ユーザが、“ＤＥＦ”のような文字列を書き、ついで、“Ｆ”が認識されている間に、入力フォーカス（カーソル）を“Ｄ”および“Ｅ”の間に動かしたならば、当該文字列は、アプリケーション・プログラムにより意図した“ＤＥＦ”の代わりに“ＤＦＥ”として認識されることになる。
入力が、受信された順序よりも、処理された順序により取り扱われる理由は、次の入力情報を処理する前に、文字認識が完了するまで待つことは、望ましいことではないということによる。更に詳しくは、もし、ユーザが、ペンで１ストロークを書いたが、ペン入力表示エリアにおいて迅速なビジュアル・フィードバックを受けなかったならば、（なぜなら先に入力された文字がまだ変換途中であるからである）、ユーザは、当該ストロークを再び書き、他の不所望のストロークを、入力キューに加える傾向にある。ペンが、一時的に“インク切れ”に見え、それから、突然回復することは、ユーザにとって極度にいらいらさせられることである。しかしながら、いっそういらいらさせられることは、システムが、いくつかの後のストロークにおいて回復したようにみえることだけでなく、先に表示されなかったいずれかの先のストロークを復旧させることである。
その結果として、これらの上記問題へのひとつのアプローチは、前の文字が認識されるまで、更なる入力を無視するようにすることである。これにより、ストロークを再び書く問題は避けられるが、認識速度を下げ、従って、アプリケーションが一時的にフリーズしたように見えることが頻発する。それに代わるアプローチは、上記のタイミングの問題（および他の関連する問題）を受け入れ、および文字認識の完了を示すような、適切なビジュアル・フィードバックを受ける後まで、さらなる入力を行わないことにより、ユーザがシステムに適応することを希望するということである。要するに、双方のアプローチはトレードオフが十分でなく、前者はシステムを下位のものと見て扱い、一方、後者は、ユーザに、意図したもの以外の何かを入力するというリスクを避けるのに望ましくないルールをわかって従うようにする。
発明の目的と概要
従って、本発明の総括的な目的は、ユーザ入力を取り扱うための改良された方法および装置を提供することにある。
この目的を達成するにあたり、関連のある目的は、ユーザに対する入力のビジュアル・フィードバックに遅れなく、ユーザ入力を取り扱う方法および装置を提供することにある。
別の関連のある目的は、ユーザが入力をエンターする順序で、ユーザ入力を取り扱う、上述のように特徴付けられる方法および装置を提供することにある。
また別の目的は、ペン入力、および、特に手書き文字およびそれに関する編集コマンドの入力を扱うための上述の方法および装置を提供することにある。
さらに別の関連する目的は、将来の種類のユーザ入力に対し、信頼性、柔軟性、拡張性を有する、上述のように特徴付けられる方法および装置を提供することにある。
手短に言うと、本発明は、ユーザ入力情報に対応するメッセージを、メッセージ・キューの中に配置するユーザ入力を取り扱うための方法および装置を提供する。入力ハンドラは、リアル・タイムで取り扱われるべきリアル・タイム・メッセージ（例えば、手書き文字ストローク）と、入力の同期された順序で処理されるべき、順序づけられたメッセージ（例えば、文字列、カーソル移動、および編集コマンド）とを区別する。入力ハンドラは、いずれかの先の順序づけられたメッセージが完了した後にのみ、各順序づけられたメッセージを処理し、一方、リアル・タイム・メッセージは、順序づけられたメッセージの完了状態に拘わらずに処理される。
他の目的および利点は、以下の図面に関連してなされる、以下の詳細な説明から明らかになる。
【図面の簡単な説明】
図１は、本発明が組み込まれたコンピュータ・システムを示すブロック図である；
図２は、本発明の一の形態によって、入力データを処理するために使用される種々の構成要素を示すブロック図である；
図３〜図６は、種々の状態を反映する種々の時間におけるメッセージ・キューの例示的なコンテンツを表示する図である；および
図７〜図９は、本発明の一の形態によって、種々のメッセージを処理するために行われる全般的なステップを示すフロー図である。
好適実施例の詳細な説明
図面を参考にするに、最初に図１を参照すれば、本発明を組み込むことのできる、符号２０で総称的に示されたコンピュータ・システムが示されている。コンピュータ・システム２０は、記憶装置２４に作動的に接続されたプロセッサ２２と、ランダム・アクセス・メモリ（ＲＡＭ）、およびハードディスク・ドライブ、光学ドライブなどのような不揮発性記憶装置を含む記憶装置とを有する。知られているように、不揮発性記憶装置をＲＡＭと共に使用して、周知のスワッピング技術を介して、比較的多量の仮想メモリを提供できる。
プロセッサ２２は、Ｉ／Ｏ回路２８を介し、キーボード、および／または、マウスのようなポインティング装置のような、１または２以上の入力装置３０1〜３０3にも接続する。システム２０は、ペン、および／または、ペンに感じる（例えば接触に感じる）入力装置３０3のような、手書き文字を含むペンに基づいた情報を入力するための手段を含むのが好ましい。システム２０は、少なくともひとつのローカル出力装置３４も有し、ローカル出力装置３４は、Ｉ／Ｏ回路２８に接続され、システム２０のユーザに、例えばグラフィカル・ユーザ・インタフェースを介するような、情報を通信する。出力装置３４は、ペン入力装置３０3と一体化されて、共にペン感受性スクリーン３５（図２）と考えることのできる液晶ディスプレイ・スクリーンなどを含むものとしてもよい。
好適システム２０は、記憶装置にロードされたＷｉｎｄｏｗｓ  ＣＥ（製品名）ＯＳ上で動作する、携帯型のパーソナル・コンピューティング装置である。他の好適システムは、Ｗｉｎｄｏｗｓ  ９５（製品名）またはＷｉｎｄｏｗｓＮＴ（製品名）ＯＳの下で動作する、タブレットに基づいたデスクトップ・パーソナル・コンピュータを含む。ワード・プロセッサ・プログラムのような、少なくとも１つのアプリケーション・プログラムも、記憶装置２４にロードされることができる。
図２に示したように、ペン感受性スクリーン３５はシステム２０に入力されたテキスト文字を表示する可視のテキスト・バッファ３６を含む。例えば、もし、文字が手書き文字であれば、システム２０は、可能な文字のセット（例えば、ユニコード・コード・ポイント）の中からその文字を認識し、そして、認識した文字をテキスト・バッファ３６の中で適切なフォントおよびフォント・サイズで表示する。
テキスト・バッファ３６の中で、一般に、ペンを所望のカーソル位置に触れさせたり、および／または、テキストをマークするためにペンをドラッグすることにより、カーソルなどの位置を調整することによって、ユーザは入力フォーカスを調整することができる。スクリーン３５は、ボタン入力エリア３８（図２）を有するのが好ましく、それにより、ユーザが、文字、文字に基づいた編集コマンドなどを直接入力できるような、仮想キーボードを提供することができる。例えば、ボタンが文字を表示するようにして、例えば、ボタンがペンにより接触された時に、文字は、あたかもユーザにより従来のキーボード上でタイプされたかのように、システムに入力される。加えて、スクリーンのうち、エリア３８の適切に表示されたボタンに接触することにより、ユーザは、このようなボタンを用いて、バックスペース、または、コマンド入力のような編集コマンドを入力することができる。
図２に示すように、手書き文字を入力するために、表示／タッチ感受性スクリーン３５は、典型的に、２または３以上のペン入力表示エリア４０，４２を有する。一般に、ペン入力表示エリア４０，４２は、ユーザから、ストロークの形態で、手書き文字を受け取るために使用される。ユーザは、典型的に、ボックス４０、４２の間で文字入力を交互に行う。例えば、ユーザが、第１のボックス４０に書き、システムは、接触したエリアを暗転、または着色することによりスクリーン上のペンの移動に反応して、ユーザに、ペンがそこにインクを付けているという印象を与える。ユーザが、第２のボックス４２に書き始める時は、第１のボックス４０の文字が完了されたことを前提とする。第１のボックス４０からのストローク情報は、ついで、手書き認識エンジン４４に送られ、そして第1のボックス４０内に表示されたストローク（インク）は消去される。同様に、同じ動作が第２のボックス４２において起こる。すなわち、ストロークはその文字認識のために送られ、および、第２のボックス４２は、ユーザが、第1のボックス４０において書き込みを行っていることが検知されたときに消去される。ボタン入力エリア３８などから入力され、ユーザが文字を終えたことを示す、ユーザからのダイレクト・コマンドのように、ペンが動いていないことが検知されたときのタイムアウトは、文字が完成したともみなされる。
本発明の１つの形態によれば、および、図２に最もよく示されているように、非同期入力ハンドラ４６を設けて、種々の入力事象（イベント）を協調させる。非同期入力ハンドラ４６は、認識エンジン４４（または、複数の認識エンジン）の状態、および、ペン感受性スクリーン３５の状態に関するすべての事象を、リアルタイムで所定の事象を処理する一方で、ユーザにより意図された事象の順序を、維持するように協調させる。更に詳しくは、非同期入力ハンドラ４６は、所定のペン事象と他の種類の事象とを区別して、リアルタイムでエレクトロニック・インクの表示を処理している間に、完成された文字、および、他のユーザコマンド入力の順序を保つ。その結果として、システム２０は入力エリア４０，４２を迅速に更新し、従って、手書き、または、他の（例えば音声）認識が行われている間に、フリーズが起こらないようにするが、ユーザ入力の順序は、ユーザによって意図された順序に維持される。
上述の協調を達成するために、システム２０は、いずれかのユーザ入力装置３０1〜３０3からの入力に対応するメッセージを、メッセージ・キュー５０、好ましくはＷｉｎｄｏｗｓ（登録商標）メッセージ・キューに格納する。例えば、ペン・ダウン事象、ペン移動事象、および、他の事象が、メッセージ・キュー５０にメッセージとして格納される。ある種のシステムにおいて、ペンとマウスの事象の間には区別が無いことに注意する必要がある。それは、例えば、ペン・ダウン事象は、マウスの左ボタンを押す事象と同様に扱われ、ペン移動は、マウス移動として扱われ、およびペン・アップは、マウスの左ボタンを離すのと同様に扱われる。同様に、システム２０は、キーボード・メッセージ、および、ボタン入力エリア３８からのボタン・メッセージのような、いくつかのメッセージの予備処理を行うことができ、および、これらのメッセージを、その後にメッセージ・キュー５０に格納される、文字または編集コマンド・メッセージに変換することができる。例えば、ボタン入力エリア３８に表示されたバックスペース・ボタン上で、ペン・ダウン事象が発生すると、ＩＤＣ＿ＢａｃｋＳｐａｃｅ（Ｉｎｄｅｘ  Ｄｉａｌｏｇ  Ｃｏｎｔｒｏｌ）メッセージが、メッセージ・キュー５０に発生するようにしてもよい。それに代えて、バックスペース・キーに対応するスクリーン座標における、ボタン・ダウン事象は、必要に応じて、非同期入力ハンドラ４６によりバックスペース・コマンドに変換されるようにしてもよい。いくつかの携帯装置は、先の文字を消去するために“デリート”キーを使用していることに注意する必要がある。いかなる事象においても、ボタンおよびペン／マウスの移動事象、文字および編集コマンドは、メッセージ・キュー５０においてメッセージとして出現する。
本発明においては、非同期入力ハンドラ４６は、このようなすべてのメッセージを、検査し、そうでなければ処理する。従って、例えば、ペン移動検知処理などにより、ペン入力表示アリア４０，４２において検知された、ペンの移動は、直接的に、ペンが検知された位置でインクを書くことにはならない。それよりも、非同期入力ハンドラ４６は、適切なペン入力座標において、メッセージ・キューの中のペン・メッセージを認識し、および、ユーザ出力装置３４（例えば、ペン入力表示エリア４０，４２に書き込むディスプレイ書き込みプロセス５２）へ、対応するドローイング・メッセージを送るようにして、インクは間接的に描かれる。同様に、ペンの移動を検知するハードウェアおよび／またはソフトウェアは、ペン・ストロークを手書き認識エンジン４４に送らず、むしろ、ペンの移動情報を、メッセージ・キュー５０の中に、メッセージとして格納する。
本発明の別の形態によれば、非同期入力ハンドラ４６はメッセージの種々のタイプを区別する。エリア４０および４２に書き込まれるインクを生じるようなリアルタイムで処理されるべきメッセージを、遅延なしに処理する。文字または文字編集コマンドのような特定の順序で処理されるべきメッセージは、先のこのようなメッセージが、処理され、かつ、完了されるや否や処理される。一例として、直接に入力されたバックスペースコマンド文字は、その前の文字が完全に処理されるまでは処理されない。先の文字が、どのように入力されたかに依存して、このことは、手書き認識エンジン４４がその認識処理を完了するまで待機が必要かもしれない。よくわかるように、通常は、キーを直接識別する入力ハードウェアからコードを受け取ることよりも、ストロークを文字に変換することの方が、はるかに長い時間がかかる。
本発明において、手書き認識エンジン４４は、別のスレッドで動作し、および、セマフォ保護エリアを通じて非同期入力ハンドラ４６と交信する。このことにより、手書き認識エンジン４４は、非同期入力ハンドラ４６からのインクおよびテキストの表示と併行して動作することができ、従って認識が行われている間、リアルタイム・メッセージを処理することができる。
ここで、図７のフロー図を特に参照しながら、本発明の処理の説明に移ると、複数のユーザ入力メッセージは、図３〜６の図に示したようなメッセージ・キュー５０において受け取られる。以下の例においては、簡単にするために、ユーザ入力ボックスにおいてペン・ダウン、ペン移動、および、ペン・アップ事象を含む、ある種のタイプの事象のみが発生するものとする。これらのペン事象によって、文字“ＡＢＣ”を書き、ついでバックスペース・メッセージを直接に入力する、キーボード・キーまたはボタン入力がなされる。それから、手書きの“Ｅ”がシステムに入力される。換言すれば、ユーザは“ＡＢＥ”と書きたかったが、うっかり“Ｂ”の後に“Ｃ”を書いたので、“Ｃ”はバックスペース・コマンドにより消去され、および、その後に“Ｅ”が書かれる。
ユーザが、ペン入力表示ボックス４０（図２）に文字“Ａ”を書き始めると、（左マウスボタンを押す事象として）ペン・ダウン・メッセージがメッセージ・キュー５０に受け取られ、一連の移動メッセージおよびペン・アップ（ＷＭ＿ＬＢｕｔｔｏｎＵｐ）メッセージが引き続きなされる。場合によっては、次のメッセージがキュー５０にまだ格納される前に、各メッセージを処理して、キュー５０から移動されるようにしてもよいことに注意してほしい。しかしながら、簡潔および明瞭のために、図３〜６の各々はメッセージ・キュー中の複数の事象により駆動されたメッセージを示す。その上、実際の座標を示す代わりに、ペン事象が発生したボックスの識別番号（図２中で番号付けられた番号）を図３〜６中に括弧を付して表示する。
図７のステップ４００において、メッセージ・ループにある非同期入力ハンドラ４６は、（ＷｉｎｄｏｗｓのＰｅｅｋＭｅｓｓａｇｅ（）機能などを介して）メッセージ・キュー５０の中を覗き、メッセージがあれば、そのメッセージを調べる。図４に一般的に示したように、非同期入力ハンドラ４６は、受け取ったメッセージのタイプ、ペン・メッセージが作られた座標、および表示入力エリアの現在の状態に基づいて、各ペン（マウス）・メッセージを処理する。例えば、手書きの“Ａ”文字を開始する、ペン・ダウン事象により、非同期入力ハンドラ４６は、その座標を介して、ペン・ダウンが、左のユーザ入力ボックス４０（図３）で発生していること、および右の入力ボックス４２には、他のストロークがまだ何も書かれていないことを知る。従って、ステップ４０４はステップ４０６に分岐して、ペン・ダウンが同じ入力ボックスにあったか否か判断する。この時には、これらの表示エリアの状態が空であるので、手書き認識エンジン４４に送るべき先のストローク情報が何も無い。従って、非同期入力ハンドラ４６は、ペン・ダウン・メッセージを同じボックス中のストロークの開始として扱うが、手書き認識エンジン４４へはいかなる情報も通さない。すなわち、ステップ４０６は、ステップ４０８へ分岐する。ステップ４０８において、タイマ６０は（以下に述べるように）リセットされ、ステップ４１２において、メッセージは、（例えば、Ｗｉｎｄｏｗｓ（製品名）のＧｅｔＭｅｓｓａｇｅ（）機能を介して）メッセージ・キュー５０から除去され、および、ユーザ入力ボックス４０における適切な座標においてインクが描かれる。
処理は、ついでステップ４００に戻り、次のメッセージがあればそれを覗く。ユーザはストロークを入力中なので、ユーザは次にペンを移動し、図３にも示したように一連のペン移動メッセージを生成する。このような各メッセージは、非同期入力ハンドラ４６により、ステップ４２０においてペン移動メッセージとして検知され、および当該移動が同じボックス４０にあるので、ステップ４１２において、各メッセージは、メッセージ・キュー５０から除去され、および、インクが描かれる。各移動事象が、処理された後、処理はステップ４００に戻り、次のメッセージがあればそれを覗く。本例では、ユーザは、ペンをユーザ入力ボックス４０の境界内に維持し、およびペンは、ユーザがペンを持ち上げるまで、動き続ける（ステップ４２０）ことに注意する必要がある。ユーザがボックスのまさに端部分に安全に書くことができるようにしながら、ストロークがボックス内に存在することを保証するために、座標は、現在のボックスの最も近い端にトリムする。従って、いったんストロークがボックス内で開始すると、それはそのボックス内で完了し、およびユーザはボックスの境界からそれることにより、文字をうっかり終了させることは無い。
最後に、ユーザがペンを持ち上げた時、ペン・アップ（ＬＢｕｔｔｏｎＵｐ）・メッセージ（図３）がステップ４３０で検知され、それにより、ステップ４３２において、非同期入力ハンドラ４６はペン・アップ事象の座標をテストして、動作が同じ入力ボックス４０において発生したか否かを判断する。同様に、ペンが置かれた時に、メッセージ中で受け取った、キーボードからの入力は、現在のストロークを終了させる。いづれの場合にも、非同期入力ハンドラ４６は、このような事象をストロークの完了と考える。その結果、ステップ４３４において、非同期入力ハンドラ４６は、キュー５０からのペン・アップ・メッセージを除去し、およびタイムアウト・タイマ６０を開始させる。
一般には、タイムアウト・タイマ６０は、ユーザがストロークを入力したが、一定の期間他のボックスに書かず、また、システムに文字を認識するように直接に命令もしなかった後であれば、ボックス４０（またはボックス４２）の中の入力を、文字認識エンジン４４に送るように動作する。明らかなように、タイムアウト事象は、あたかもシステムが文字を認識するようにユーザが直接に命令したり、または（図８を参照して記載するように）他のボックスに書き始めるように、扱われる。しかしながら、本例においては、ユーザは、タイムアウト事象が発生するまで、入力ボックス４０に書き続ける。
従って、ステップ４０４は、別のペン・ダウン・事象を同じボックス４０において検出し、それにより、ステップ４０６はステップ４０８へ分岐し、ここでタイマ６０をリセットする。タイマ６０はリセットされることに注意する必要があるが、その理由は、同じボックス中のこのような動作は、別のストロークの開始であると考えられ、従って、ユーザは同じ文字をまだ書いていると推定されるからである。本例において、図３から明らかなように、ユーザは新しいストロークを書き続け、（すなわち、ペンを移動させ）、ステップ４２０、４２２および４１２を参照して上述したように処理される。最後には、ユーザはペンを持ち上げ（ステップ４３０〜４３４）、および、最初の文字を書き終わる。
ユーザが、次のボックス４２にペンを置いたとき、図３の最後のメッセージ（それは、図４の最初のメッセージでもある）に示したように、ステップ４０６は、新しいスクリーン・エリアを検知し、および、その結果、図８のステップ４５０に分岐する。ユーザが、同じボックス４０以外で何かを書き始めたので、非同期入力ハンドラ４６は、先の文字はユーザによって終了させられたと考える。もしペン・ダウンが無効なエリアにおいて行われると、このような未定義のペン・ダウンを無視するような、別の動作を代わりに発生させてもよいことに注意する必要がある。いずれにせよ、次のメッセージは他のボックス４２にあり、従って、処理は、ステップ４５０を実行する。
ステップ４５０において、手書き認識エンジン４４において認識が処理中か否かが判断される。ストロークが認識のために送られたときに、非同期入力ハンドラ４６によりセットされ、および認識が完了したときに手書き認識エンジン４４によりリセットされるフラグが、このテストのために使用される。この時に、認識は処理中ではなく、従ってステップ４５２は、ストローク情報をボックス４０から手書き認識エンジン４４へ送り、その後、ステップ４５４は認識フラグをセットする。処理は、ついでステップ４１４に戻り、そこで古いボックス４０のインクを消去し、および、新しいペン・ダウンの座標をテストして、どのようにその事象を処理するかを判断する。更に詳しくは、もし、ペン・ダウンが他の入力ボックス４２にあったなら、インクは描かれるべきであり、および、メッセージは除去される。もし、ペン・ダウンがその他の場所にあったなら、他の動作が、以下に詳細に記載するように、発生することもある。
本例において、ユーザは、第２の入力ボックス４２に“Ｂ”と書いている途中である。従って、このボックス４２においてペン・ダウン事象（ＷＭ＿ＬＢｕｔｔｏｎＤｏｗｎ）が、ステップ４１６において、キュー５０（図４）の中で検知され、それにより、処理は、ステップ４１２に分岐する。ステップ４１２は、このメッセージをキュー５０から除去し、および、ボックス４２の中のペン（ボタン）・ダウン座標において、インクを描く。容易に理解されるように、このボックス４２中の、図４に示したような、次のペン移動事象およびペン・アップ事象は、ステップ４２０〜４２６および４３０〜４３４を参照して各々上述したように、処理される。
ユーザは、第1のボックス４０において“Ｃ”を書き始めることにより、続ける。再び、ステップ４０６は、図８のステップ４５０の処理に分岐する。しかしながら、今回は、手書き認識エンジン４４は“Ａ”の文字をまだ認識中であり、従って“処理中”フラグの状態により、処理はステップ４５６へ分岐する。ステップ４５６は、（例えば、Ｗｉｎｄｏｗｓ（製品名）のＰｏｓｔＴｈｒｅａｄＭｅｓｓａｇｅ（）機能を介して）送信メッセージなどをメッセージ・キュー５０に入れ、一方、ステップ４５８は、ストローク・データを（例えば、ビットマップとして、または、所要の他の適切なフォーマットとして）セーブし、後に手書き認識エンジン４４によって使用するようにする。入力ボックス４２は、ステップ４１４で消去され、および、ステップ４１６および４１２を実行して、“Ｃ”をインクで書き始める。本発明において、この“ｓｅｎｄ−ｔｏ−ｔｈｅ−ｈａｎｄｗｒｉｔｉｎｇ  ｒｅｃｏｇｎｉｔｉｏｎ  ｅｎｇｉｎｅ４４（手書き認識エンジン４４への送信）”メッセージは、図４においてイタリック体で示されているが、メッセージ・キュー５０から除去されない。その代わりに、手書き認識エンジン４４がフラグをクリアして処理中の文字がないことを示すときに、このメッセージは除去されて処理される。
上述したようにして、ペン移動メッセージを処理してインクを描く（ステップ４１２）ことにより、図４に示したように、処理は、メッセージ・ボックス４０中の“Ｃ”ストローク入力を処理し続ける。本例のために、“Ｃ”が入力されている間、手書き認識エンジン４４は、“Ａ”を認識してリターンする（または“Ａ”を含む、可能な代替物のセットをリターンする）。フラグ変更は、図７のステップが開始される前に、簡単なテストで検出される。それが、検出されると、キュー５０に残されたいずれのメッセージも、フラグが別の処理中の認識のために再びセットされるまで、またはメッセージが何も残っていなくなるまで、処理されて除去される。
従って、“Ａ”の入力は、あたかもいずれか他のキー入力かの如くに、適当なバッファまたはプログラム（例えば、ワード・プロセッサ）に送られる。“Ａ”を、テキスト・ボックス３６に表示することもできる。ついで、セーブされた“Ｂ”のストローク情報は、手書き認識エンジン４４に送られ、および、フラグは、処理中の認識を示すために再びセットされる。
ついで、ユーザは、キーボード３０1またはボタン入力エリア３８等を介してＢａｃｋＳｐａｃｅを入力して、完了した“Ｃ”文字を消去する。この時、非同期入力ハンドラ４６は、“ｓｅｎｄ  Ｃ  ｄａｔａ  ｔｏ  ｈａｎｄｗｒｉｔｉｎｇ  ｒｅｃｏｇｎｉｔｉｏｎ  ｅｎｇｉｎｅ  ４４（Ｃデータを手書き認識エンジン４４に送信）”メッセージを、キュー５０に配置する。上述したように、システムは、ペン・ダウン・メッセージ、およびその座標の代わりに、ＢａｃｋＳｐａｃｅ（バックスペース）メッセージをキュー５０に書いてもよい。しかしながら、もし書かないのであれば、非同期入力ハンドラ４６は変換を行うことができる。しかしながら、いずれにせよ、“ｓｅｎｄ  Ｃ”メッセージに続いてバックスペースメッセージはキュー５０中に残る。本発明の一つの形態によれば、バックスペースはまだ処理されない。その理由は、少なくとも１つの文字が、まだ手書き認識エンジン４４中で処理中であるからである。以下に記述するように、（Ｍｉｃｒｏｓｏｆｔ  ＩＭＥ９８（製品名）を含む）いくつかの実施例において、バックスペース・メッセージは、非同期入力ハンドラ４６により認識されて、使用されることにより、バックスペース・メッセージの直前の手書き文字の進行中の認識を終了することができる、特殊な場合であることに注意する必要がある。本例のために、この拡張機能（エンハンスメント）はまだアクティブではなく、本発明により提供される順序づけられたメッセージの処理を示すことができないと仮定する。しかしながら、理解されるように、拡張機能があっても、本発明による順序づけられたメッセージの処理は、多くの他の状況で利点を提供するが、それは例えば、他のキーストローク文字、またはコマンドが、いずれかの進行中の認識が完了する前や、バックスペースが、それに先行する２または３以上の文字の進行中の認識をキャンセルしない前は、処理されない等である。
“Ｂ”の認識が完了した時、処理は、次に“Ｃ”を手書き認識エンジン４４に送信する。処理中の認識の間、ユーザは“Ｅ”ストロークを入力ボックス４２に書き始める。これらの事象により、上述のように直ちにインクが描かれ、一方では、他の順序づけられたメッセージは、すべての先行して順序づけられたメッセージが処理されるまで、キューの中に残される。
本例において、いったん“Ｃ”が手書き認識エンジン４４によって返却されると、フラグはクリアーされ、および、次のＢａｃｋＳｐａｃｅが、遅延なしに処理される。このように、“Ｃ”は消去され、および、“Ｅ”文字は、認識された時に“ＡＢ”文字列に続いてテキスト・ボックス３６に適切に書かれる。上述したように、処理は、ユーザ入力表示エリア・ボックス４０，４２の中へのインクの書き込みに遅延を生じさせることもなく、ユーザにより意図された順序を維持する。
もし、処理中の認識がないなら、処理は、ペン事象を含むすべてのメッセージが直ちに処理される場合を除いて、同様の一般的方法で実行される。これは、図９に示され、そこでは、認識がステップ４６０において処理中でないならば、処理はステップ４６２に分岐する。ステップ４６２により検知されたように、テキスト・ボックス３６中のペン事象を用いて、ステップ４６４で示したように、カーソルを移動させ、テキストにマークを付けるなどを行い、およびメッセージが除去される。ＢａｃｋＳｐａｃｅキー入力、タイプされた文字列などのような、他のテキストでないボックス事象は、ステップ４６６で示すように、除去され、かつ、直ちに処理される（例えば、テキスト・ボックスに表示され、および／または、バッファもしくはプログラムの他のメッセージ・キューに送信される）。代わりに、もし、認識が処理中であれば、ステップ４６０は、上述のように、メッセージ・キュー５０中にこのような他の事象メッセージを残すことに、注意する必要がある。
本発明には必ずしも必要ではないが、非同期入力ハンドラ４６は、このようにする代わりに、手書き認識エンジン４４に未だ送信されていない“ｓｅｎｄ  ｔｏ  ｒｅｃｏｇｎｉｚｅｒ（認識装置へ送信）“メッセージに続いて、ＢａｃｋＳｐａｃｅメッセージを検知するようにしてもよいということに注意する必要がある。このような事象において、非同期入力ハンドラは、２つのメッセージをキャンセルできるが、その理由は、認識されたときに得られる文字の如何にかかわらず、その文字は消去されるからである。同様に、認識が処理中に、非同期入力ハンドラ４６の次のＢａｃｋＳｐａｃｅを検知すると、このようにする代わりに、非同期入力ハンドラ４６が手書き認識エンジン４４と交信して、所与の文字、に対する処理中の認識処理を停止させ、それによりさらにシステムの性能を高める。
図６に示すように、ペン・ダウン事象は、テキスト・ボックス３６の中に位置させてもよい。本例において、ユーザは、その後にドラッグしないで、ペンを上に持ち上げ、入力フォーカス（カーソル）を“Ａ”と“Ｂ”の文字間のような、テキスト・ボックス３６の適切な位置に移動することを意図している。しかしながら、本発明においては、このような移動は、すべての先行する同期事象が処理されるまで、ステップ４６０により許容されない。換言すれば、もし、文字認識が、ステップ４６０において処理中であるなら、非同期入力ハンドラ４６は、手書き認識エンジン４４から得られるすべての先行する結果が処理された後に、順次処理を行うために、ペン・ダウンまたはペン・アップ・コマンドをキュー５０に残す。例えば、もし、ユーザが、システムに“ＡＢＥ”を手書きし、そして“Ｅ”が認識されている間に、ユーザが、“Ａ”と“Ｂ”の間をクリックし、および“Ｄ”の文字を書いたならば、挿入ポイント（入力フォーカス）は、最後に“Ｅ”が現れるまで、現れて変更しない。その時、“Ｄ”は、テキスト・バッファ３６の“Ａ”と“Ｂ”の間に現れる。認識の完了を待機しないで、その結果は、意図した文字列“ＡＤＢＥ”の代わりに、誤った文字列“ＡＥＤＢ”となってしまう。ユーザは、ビジュアル・フィードバックを受け取る前まで、短い間待つ必要があるかもしれないが、順序は保たれる。
上述の方法において、非同期入力ハンドラは、ユーザ入力を処理するが、それは、認識を処理中でない場合、または、１または２以上の認識を処理中の場合の、双方である。その順序は、ユーザによって入力された意図された順序で維持されたにもかかわらず、ストローク入力のビジュアル・フィードバックを受け取る際に遅延は無い。簡単にわかるように、非同期入力ハンドラ４６は、ペン事象と文字入力とを簡単に区別するのではなく、メッセージのタイプ、もしあれば付随する座標、およびシステムの状態に基づいて、適切な動作をとる。
手書き文字の認識に加えて、本発明は、音声入力を含むすべての入力のタイプに対して、柔軟であり、および、適合性を有する。更に詳しくは、音声入力は、単語、音節、および／または、文字列として出力されるであろうとなかろうと、それに関連した認識時間も持つ。この認識時間の間、手書き文字ストローク、キーボード入力、および、他の音声のような、他のユーザ入力は、ユーザにより入力された順序で処理される。このために、もしも認識フラグが処理中であれば、順序づけられたメッセージは、キューに入れられたままで残され、一方、これらの対応したストローク、または、音声入力のようなリアルタイム・メッセージは、直ちに処理される。
以上の詳細な説明からわかるように、ユーザへの入力の選択されたビジュアル・フィードバックでユーザ入力を処理する、ユーザ入力を処理するための改良された方法および機構ないし装置が提供される。本発明の方法および装置は、ユーザが入力を入力した順序でユーザ入力を処理するが、その入力は、手書き文字、および、それに関連する編集コマンドの入力を含む。本発明の方法および装置は、将来の種類のユーザ入力に対しても信頼性、柔軟性、および拡張性を有する。
本発明は、種々の変更、および代替構成を取ることができるが、そのうちのある例示した実施例は、図面に示され、かつ、上述のように詳細に記載されている。しかしながら、開示された特定の形態に本発明を限定する意図は無く、それどころか、本発明の意図は本発明の精神および範囲に入るすべての変更、代替構成、および均等物を包含することがあるということを理解するべきである。
【図１】
0004548808.tif 000002
【図２】
0004548808.tif 000003
【図３】
0004548808.tif 000004
【図４】
0004548808.tif 000005
【図５】
0004548808.tif 000006
【図６】
0004548808.tif 000007
【図７】
0004548808.tif 000008
【図８】
0004548808.tif 000009
【図９】
0004548808.tif 000010