(57)【特許請求の範囲】
【請求項１】
ポインティングデバイスによって作成されたジェスチャを識別する方法であって、
ポインティングデバイスのストロークから、フリックジェスチャを判定するステップであって、フリックジェスチャは、他のジェスチャとは区別され、フリックジェスチャは複数のフリック領域の少なくとも１つで発生し、各フリック領域は、始動するアクションに関連付けられており、各フリック領域は、円の一部分であり、円の中心がフリックジェスチャの開始点であること、
実行されるアクションを決定するステップであって、アクションの決定は、
アクションの第１のセットは第１のポインティングデバイスに関連し、アクションの第２のセットは第２のポインティングデバイスに関連し、アクションの第１のセットおよびアクションの第２のセットは、それぞれ左利き、右利き、およびポインティングデバイスの物理的な角度に適応し、
複数のフリック領域のうちの１つを決定するための、ストロークの、方向、動き、タイミングに基づく、ストロークの特徴づけと、システムのハードウェアに基づいていること、
所定の時間間隔にわたって所定の閾値に基づいて速度が低下したことを判定するステップであって、前記所定の時間間隔は、偽陽性、または間違って始動されたアクションを回避するように設定される間隔よりも大きいこと、
フリックジェスチャについてのメッセージを、オペレーティングシステムまたはコンピューティングアプリケーションに送信するステップと、
前記フリックジェスチャの認識および該フリックジェスチャに関連する方向またはフリック領域を示すアニメーションフィードバックを提供するステップであって、フリックジェスチャの解釈は、コンテキストセンシティブおよび特定の機能を実行するようカスタマイズ可能であり、コンテキストセンシティブは、フリックジェスチャが第１のアプリケーションのコンテキスト内で実行されるときに実行される第１のオペレーションを含み、コンテキストセンシティブは、フリックジェスチャが第２のアプリケーションのコンテキスト内で実行されるときに実行される第２のオペレーションを含み、第１のアプリケーションおよび第２のアプリケーションは異なるアプリケーションであり、第１のオペレーションおよび第２のオペレーションは異なるオペレーションである、ステップと
を含むことを特徴とする方法。
【請求項２】
ポインティングデバイスは、マウスを含み、ポインティングデバイスのストロークから決定することは、ポインティングデバイスがコンタクトしたあとに動きが発生したか否かを決定することを含み、コンタクトはマウスボタンの操作を含むことを特徴とする請求項１記載の方法。
【請求項３】
ポインティングデバイスのストロークの長さが、コンピュータ生成ディスプレイとの接触の後に第１の閾値を超えて発生したことを決定するステップと、
所定の時間間隔にわたって所定の閾値に基づいて速度が低下したことを判定するステップであって、該所定の時間間隔は、偽陽性または間違って始動されたアクションを回避するように設定される間隔よりも大きいこと、
ポインティングデバイスのストロークの特性を決定するステップであって、特性は、方向、動き、ストロークのタイミングの少なくとも１つであること、
前記ストロークの特性から算出される値を計算するステップであって、生成された値は、速度、加速度、曲率または揚程を含み、前記生成された値によりフリックジェスチャが判定されること、
実行されるアクションを決定することであって、アクションを決定するステップは、
第１のポインティングデバイスと関連するアクションの第１のセットと、
第２のポインティングデバイスと関連するアクションの第２のセットとであって、アクションの第１のセットおよびアクションの第２のセットは第１のポインティングデバイスおよび第２のポインティングデバイスについてそれぞれカスタマイズ可能であり、アクションの第１のセットおよびアクションの第２のセットはそれぞれ、左利き、右利き、物理的な角度に適応するようカスタマイズ可能であり、
前記ストロークの少なくとも１つの特性と、
前記生成された値と、に基づくこと、
前記アクションを決定するステップの結果に基づいて、ジェスチャの認識、フリックジェスチャの方向またはジェスチャに関連した領域を示すアニメーションフィードバックを提供するステップであって、フリックジェスチャの解釈がコンテキストセンシティブであり、特定の機能を実行するようカスタマイズ可能であり、コンテキストセンシティブはフリックジェスチャが第１のアプリケーションのコンテキスト内で実行されたときに実行される第１のオペレーションを含み、コンテキストセンシティブは、フリックジェスチャが第１のアプリケーションとは異なる第２のアプリケーションのコンテキスト内で実行されたときに実行される第１のオペレーションとは異なる第２のオペレーションを含む、ステップと
を含むことを特徴とする方法。
【請求項４】
前記ポインティングデバイスはマウスを含み、前記接触はマウスボタンの操作を含む、ことを特徴とする請求項３記載の方法。
【請求項５】
前記ポインティングデバイスはスタイラスを含み、前記接触はコンピュータ生成された画面の表面への接触、または画面の直上にあることを含むことを特徴とする請求項３記載の方法。
【請求項６】
ポインティングデバイスはユーザの指を含み、前記接触はコンピュータ生成された画面の表面への接触、または画面の直上にあることを含むことを特徴とする請求項３記載の方法。
【請求項７】
ジェスチャのパスの真っ直ぐさを決定するステップをさらに含み、ジェスチャは真っ直ぐな決定に基づいて発生するよう決定されることを特徴とする請求項３記載の方法。
【請求項８】
インク可能領域内でジェスチャの発生が開始したかを決定するステップをさらに含み、ジェスチャがインク可能領域で発生していないときにジェスチャが発生したことが決定されることを特徴とする請求項３記載の方法。
【請求項９】
ポインティングデバイスによって作成されるジェスチャを認識するシステムであって、
コンピュータ生成されたディスプレイに接触した後に、初期の動きの閾値を超えてポインティングデバイスの動きが生じたかを決定する第１の手段と、
ハードウェアシステムと、第１のポインティングデバイスに関連したアクションの第１のセットおよび第２のポインティングデバイスに関連したアクションの第２のセットとに基づいて実行される動きを決定する第２の手段であって、アクションの第１のセットおよびアクションの第２のセットは第１のポインティングデバイスおよび第２のポインティングデバイスについてそれぞれカスタマイズ可能であり、アクションの第１のセットおよびアクションの第２のセットはそれぞれ左利き、右利き、およびポインティングデバイスの物理的角度に適合するようカスタマイズされること、
ポインティングデバイスの速度が低下していないかを決定する第３の手段と、
前記第２の手段および前記第３の手段によって実行される決定に基づいて、フリックジェスチャを判定する第４の手段であって、フリックジェスチャが他のジェスチャとは区別され、かつ複数の領域の少なくとも１つで発生し、各々のフリック領域は始動されたアクションと関係し、円の領域であり、円の中心がフリックジェスチャの開始点であること、
フリックジェスチャの認識、フリックジェスチャの方向、またはフリックジェスチャと関連する領域を示すアニメーションフィードバックを提供する第５の手段であって、速度決定手段が、所定の時間間隔にわたって所定の閾値に基づいて速度が低下したことを判定し、該所定の時間間隔は、偽陽性または間違って始動されたアクションを回避するように設定される間隔よりも大きいこと、
フリックジェスチャを解釈するための第６の手段であって、フリックジェスチャの解釈がコンテキストセンシティブであり、特定の機能を実行するようカスタマイズ可能であり、コンテキストセンシティブはフリックジェスチャが第１のアプリケーションのコンテキスト内で実行されたときに実行される第１のオペレーションを含み、コンテキストセンシティブは、フリックジェスチャが第１のアプリケーションとは異なる第２のアプリケーションのコンテキスト内で実行されたときに実行される第１のオペレーションとは異なる第２のオペレーションを含むこと
を備えていることを特徴とするシステム。
【請求項１０】
前記ポインティングデバイスはマウスを含み、前記接触はマウスボタンの操作を含むことを特徴とする請求項９記載のシステム。
【請求項１１】
前記ポインティングデバイスはスタイラスを含み、前記接触はコンピュータ生成された画面の表面への接触、または画面の直上にあることを含むことを特徴とする請求項９記載のシステム。
【請求項１２】
ポインティングデバイスはユーザの指を含み、前記接触はコンピュータ生成された画面の表面への接触、または画面の直上にあることを含むことを特徴とする請求項９記載のシステム。
【請求項１３】
ジェスチャのパスの真っ直ぐさを決定する手段をさらに含み、ジェスチャは真っ直ぐな決定に基づいて発生するよう決定されることを特徴とする請求項９記載のシステム。
【請求項１４】
インク可能領域内でジェスチャの発生が開始したかを決定する手段をさらに含み、ジェスチャがインク可能領域で発生していないときにジェスチャが発生したことが決定されることを特徴とする請求項９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、コンピューティングシステムに関する。より具体的には、本発明の態様は、手書きジェスチャが生じたときを判定するプロセスに関する。
【背景技術】
【０００２】
コンピューティングシステムは、様々な入力を受容する。コンピュータアプリケーションの中には、ポインティングデバイスによって形成されたジェスチャを受容し、アプリケーションの制御およびナビゲーションをより容易にできるものがある。しかし、従来のジェスチャレコグナイザに伴う難点は、あまりにも多くの偽陽性および偽陰性を提供することである。ユーザが、ポインティングデバイス（例えば、スタイラスまたはスタイラスベースのコンピュータでの指またはマウス）を使用しているときに、システムが、ポインティングデバイスからの通常のアクションをジェスチャと解釈し、そのジェスチャに関連した機能を実行する場合があり、ユーザを当惑させる。同様に、ユーザが、あるジェスチャを実行しようとして、そのコンピューティングシステムがユーザの努力をジェスチャとして認識しないときに、ユーザは、不満を抱くこともある。場合によっては、ジェスチャは、別々の動作に分けられ、その場合、ユーザは、あるジェスチャが認識される前にモードの変更を余儀なくされる。例えば、オペラ（Ｏｐｅｒａ）ブラウザ（ノルウェー、オスロのオペラソフトウエアＡＳＡ社製、Ｏｐｅｒａ  Ｓｏｆｔｗａｒｅ  ＡＳＡ）では、マウスのジェスチャを使用して、ブラウザの動作を制御することができる。同様のマウスジェスチャは、ファイアーフォックス（Ｆｉｒｅｆｏｘ）ブラウザ（モジラオーガニゼーション、カリフォルニア州、マウンテンビュー、ｔｈｅ  Ｍｏｚｉｌｌａ  Ｏｒｇａｎｉｚａｔｉｏｎ）のプラグインによって、利用することが可能である。これらのブラウザはジェスチャを認識するが、ユーザは、ジェスチャを実行することをブラウザに明確に通知するために、ブラウザの動作モードを切替える必要がある。オペラおよびファイアーフォックスの両方において、動作モードは、ジェスチャの実行前にユーザが右（または補助）のマウスボタンをクリックすることによって、切替えられる。ここでの問題は、全ジェスチャを完了するために複数のステップを実行しなければならないこと、つまり右のマウスボタンを押し、次にマウスをドラッグしなければならないことである。スタイラスの使用時、これらのブラウザでは、スタイラスが代わりの入力モードを入力すること、つまり（スタイラスがスタイラスボタンを有する場合）スタイラスボタンを押すことが必要である。これらの複数のステップは、ジェスチャを扱い難くする。さらに、これらのブラウザは、マウスまたはスタイラスのボタンを押下している間、直線から構成されたジェスチャを認識することができるが、非読取専用の環境（例えば、ワードプロセッシング環境）に適用されたときに、あまりにも多くの偽陽性を生じかねないので、ブラウザ上で受容可能なジェスチャは、一般的に、より多くの環境では使用できない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ジェスチャを認識し、ジェスチャに機能を割当てるコンピュータシステムまたはコンピュータアプリケーションにおいて、一般的に形状のみを使用して、ジェスチャが生じたか否かを判定する。形状のみを使用することの問題は、スタイラスまたはマウスの扱いが遅いユーザは、ジェスチャではないというユーザの意図にもかかわらず、ジェスチャと認識されるアクションを実行する傾向があり得ることである。
【０００４】
マーキングメニュー（ラジアルメニューとも呼ばれる）とは、ポインティングデバイスを用いる対話によってアクセスすることができるメニューである。カナダオンタリオ州トロントのエイリアス  システムズ  コーポレーション（Ａｌｉａｓ  Ｓｙｓｔｅｍｓ  Ｃｏｒｐ．）のＭａｙａアプリケーションおよびＡｌｉａｓアプリケーションは、マーキングメニューの例を提供する。これらは、開始位置および停止位置を含む点でジェスチャに類似するが、マーキングメニューは、ユーザ入力の関連部分が、ボタンまたはスタイラスのアップイベントの位置であり、その位置への実際のパスの形状ではないメニューであると考えられる。
【０００５】
ジェスチャレコグナイザによって容易に認識され、さらにユーザによって容易に実行される改良したジェスチャが必要である。
【課題を解決するための手段】
【０００６】
本発明の態様は、上述した１つまたは複数の課題に対処することによって、ジェスチャを確実に認識するプロセスを提供する。
【図面の簡単な説明】
【０００７】
【図１】本発明の態様に係る汎用コンピューティング環境の具体例を示す図である。
【図２】本発明の態様に係るタブレットコンピュータの具体例を示す図である。
【図３】本発明の態様に係るフリックジェスチャが生じたと判定される可能性のある各種領域を示す図である。
【図４】本発明の態様に係るフリックジェスチャが生じたか否かを判定するプロセスを示す図である。
【図５】本発明の態様に係る命令をユーザに提供する具体的な個別指導プロセスを示す図である。
【図６】本発明の態様に係るジェスチャレコグナイザとともに使用することもできる具体的な各種コンポーネントを示す図である。
【発明を実施するための形態】
【０００８】
本発明は、同様の参照番号が類似した要素を示す添付図面において、制限ではなく例として図示される。
【０００９】
本発明の態様はフリックジェスチャの認識に関する。
【００１０】
読者にわかり易いように、本明細書をいくつかの小節に分ける。これらの小節には、インクの特徴、用語、汎用コンピューティング環境、ジェスチャ、フリックジェスチャ、フリックジェスチャの判定、トレーニング、および具体的な実装が含まれる。
【００１１】
下記の説明において、要素間での各種の接続が述べられることに留意されたい。特に指定されない限り、一般にこれらの接続は、直接的または間接的なものであること、本明細書は、この点において制限することを意図したものではないことに留意されたい。
【００１２】
インクの特徴
インクペンを使用しているユーザにとって周知なように、物理的なインク（インク溜の付いたペンを使用して、紙の上に書き付けられるようなインク）は、一連の座標を線分で結んだものに比べてより多くの情報を伝達できる。例えば、物理的なインクは、ペン圧（インクの濃さによる）、ペンの角度（線分もしくは曲線分の形状、およびインク周囲の細かな点のできかたによる）、ならびにペン先の速度（直線性、線幅および直線または曲線全体での線幅の変化による）を表すことができる。さらなる例は、インクが置かれた紙の繊維または他の表面にインクが吸収される方法も含む。これら微妙な特徴もまた、上記のリストした特性を伝達するのに役立つ。これらの特性が加わることにより、点の間を均一な線幅で結ぶ場合に比べて、感情、個性、強調等をより即時的に伝達することができる。
【００１３】
電子インク（またはインク）は、ユーザがスタイラスベースの入力装置を使用するときに、キャプチャされた電子情報をキャプチャおよび表示することに関係する。電子インクとは、ストロークのシーケンスまたは任意の集合のことであり、各ストロークは、点のシーケンスからなる。ストロークは、同時に、描かれるか、集められてもよい。または、個別の時間および位置で個別の理由のために描かれるか、集められてもよい。デカルト座標（Ｘ，Ｙ）、極座標（ｒ、Θ）および当業者が周知のその他技術を含む様々な既知の技術を使って、点を表現することができる。電子インクは、圧、角度、速度、色、スタイラスのサイズおよびインクの不透明度を含む実際のインクの特性の表現を含むことができる。電子インクは、インクをページに付着させた順番（ほとんどの西洋の言語については、左から右、次いで下のラスタパターン）、タイムスタンプ（インクが付着した時間を示す）、インクの作者の表示、および発生装置（インクが描かれた機械の少なくとも１つの識別、またはインクを付着に使用したペンの少なくとも１つの識別）を他の情報のうちに含む他の特性をさらに含むこともできる。
【００１４】
用語
インク  特性を持つストロークのシーケンスまたはセット。ストロークのシーケンスには、ストロークが順序付けられた形で含まれ得る。シーケンスは、キャプチャされた時間によって、またはページ上のどこにストロークが現れたかによって順序付けるか、またはインクの作者による共同作業の形で順序付けることができる。その他の順番も可能である。ストロークのセットには、ストロークのシーケンスまたは順序付けされていないストローク、またはその組合せが含まれ得る。さらに、特性の中には、ストローク中の各ストロークまたは各点に一意な特性（例えば、圧力、速度、角度など）があってもよい。これら特性はストロークまたは点のレベルで保存できるが、インクのレベルでは保存できない。
【００１５】
インクオブジェクト  特性あり、または特性なしでインクを記憶するデータ構造。
【００１６】
ストローク  キャプチャされた点のシーケンスまたはセット。例えば、レンダリングされたときに、ポイントのシーケンスを線で結ぶことができる。あるいは、次の点の方向に向いた点もしくはベクターとして、ストロークを表すこともできる。要するに、ストロークとは、基礎となる点および／または点を結ぶものの基本的な表現に関係なく、インクに関する点または線分のあらゆる表現を包含するものである。
【００１７】
点  空間中のある位置を定義する情報。例えば、点を、キャプチャ空間（例えば、デジタイザ上の複数の点）、仮想インク空間（キャプチャしたインクを置く空間内の座標）、および／またはディスプレイ空間（ディスプレイ装置の複数の点または複数のピクセル）に関連して定義することができる。
【００１８】
文書  視認可能な表現および内容を有する電子ファイル。文書には、ウェブページ、ワードプロセッシング文書、ノートページもしくはノートパッド、スプレッドシート、ビジュアル・プレゼンテーション、データベースの記録、画像ファイル、およびその組合せが含まれ得る。
【００１９】
フリック  あるコンピュータシステムのポインティングデバイスの短く、迅速で直線的な移動。ポインティングデバイスが、スタイラスまたは指の場合、フリックは、スタイラスが使用可能なコンピュータの表面上か、またはその表面より上に生じる［occur］ことができる。ポインティングデバイスがマウスの場合は、移動は、マウスボタンを下方にホールド、またはホールドしない状態で、生じることができる。フリックは上に定義したようなストロークを作成することができる。ストロークは、ポインティングデバイスを用いたドローイングまたはインキングを含むが、これに限定されない他の作業によっても、同様に作成できることに留意されたい。スタイラスを使用してフリックジェスチャを実行する利点は、ペンが使用できるコンピュータ（アクティブペンおよびスタティックペンを用いる）との組み合わせでフリックジェスチャを使用することが可能になることである。マウスを用いてフリックジェスチャを実行する利点は、マウスの使用は容易であり、ほとんどのコンピュータに共通して備わっていることである。指を使ってフリックジェスチャを実行する利点は、一部のユーザは、ペンを基本としたコンピュータでは、ユーザの中には、スタイラスよりも指を用いることを好むユーザがいることであり、ユーザが自分の指を使用してフリックを実行できることによって、追加のハードウエアを使用せずにフリックの機能性をユーザに提供できることである。
【００２０】
汎用コンピューティング環境
図１は、本発明を実装することができる適当なコンピューティングシステム環境１００の例を示す。コンピューティングシステム環境１００は、適当なコンピューティングシステム環境の一例にすぎず、本発明の使用または機能性の範囲について何らかの制限を示すことを意図したものではない。コンピューティングシステム環境１００は、例示的な動作環境１００に示したコンポネートのいずれか１つまたは組合せに関する何らかの依存性または要件を有するものとして解釈されてはならない。
【００２１】
本発明は多数の他の汎用または専用のコンピューティングシステム環境または構成で動作する。本発明とともに使用するのに適当な公知のコンピューティングシステム、環境、および／または構成の例には、これに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、多重プロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置などのいずれかを含む分散コンピューティング環境が含まれる。
【００２２】
本発明は、プログラムモジュールなどのコンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテクストにおいて説明される。一般に、プログラムモジュールには、特定のタスクを実行するか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポネート、データ構造などが含まれる。本発明は、通信ネットワークを通してリンクされたリモート処理装置によってタスクを実行する分散コンピューティング環境において実行されてよい。分散コンピューティング環境では、プログラムモジュールは、メモリストレージを含むローカルおよびリモートコンピュータストレージ媒体に配置される。
【００２３】
図１を参照すると、本発明を実装するシステム例には、コンピュータ１１０の形の汎用コンピューティング装置１１０が含まれる。コンピュータ１１０のコンポネートには、これに限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む各種システムコンポネートを処理ユニット１２０に結合するシステムバス１２１が含まれ得る。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルカバスを含む数種のバス構造のいずれかであってよい。制限ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルカバス、およびメザニンバスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれてよい。
【００２４】
コンピュータ１１０は、様々なコンピュータ可読媒体を典型的に含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセスできる任意の利用可能な媒体であってよく、また揮発性および不揮発性媒体、リムーバブルおよび固定の媒体の両方を含む。制限ではなく例として、コンピュータ可読媒体は、コンピュータストレージ媒体および通信媒体を含むことができる。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなど情報のストレージ方法または技術で実装した揮発性および不揮発性媒体、リムーバブルかつ固定の媒体の両方が含まれる。コンピュータストレージ媒体には、これに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージ装置、または所望の情報を格納するのに使用することができ、コンピュータ１１０によってアクセスすることができる任意の他の媒体が含まれる。通信媒体は、典型的に、コンピュータ可読命令、データ構造、プログラムモジュールまたは搬送波または他の搬送機構などの被変調データ信号の他のデータを具体化しかついずれかの情報送出媒体を含む。用語「被変調データ信号（ｍｏｄｕｌａｔｅｄ  ｄａｔａ  ｓｉｇｎａｌ）」は信号の情報を符号化するような方法で設定または変更された１つまたは複数のその特徴を有する信号を意味する。制限でなく一例として、通信媒体は有線ネットワークまたは直接有線接続などの有線媒体、および音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含む。上記のいずれかの組合せもコンピュータ可読媒体の範囲内に含まれなければならない。
【００２５】
システムメモリ１３０は、読取専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形のコンピュータストレージ媒体を含む。始動中などに、コンピュータ１１０内の要素間の情報の伝送を助ける基本ルーチンを含む基本入／出力システム１３３（ＢＩＯＳ）は、典型的に、ＲＯＭ１３１に格納される。ＲＡＭ１３２は、直ちにアクセス可能であり、かつ／または処理ユニット１２０で動作しているデータおよび／またはプログラムモジュールを典型的に含む。制限ではなく例として、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２６】
コンピュータ１１０には、他のリムーバブル／固定で、揮発性／不揮発性のコンピュータストレージ媒体も含まれてよい。例に過ぎないが、図１は、固定で不揮発性の磁気媒体から読取りまたはそこに書込むハードディスクドライブ１４１、リムーバブルで不揮発性の磁気ディスク１５２から読取りまたはそこに書込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブル、固定の光ディスク１５６から読取りまたはそこに書込む光ディスクドライブ１５５を示す。動作環境例において使用することができる他のリムーバブル／固定で、揮発性／不揮発性のコンピュータストレージ媒体には、これに限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、典型的に、インターフェース１４０などの固定のメモリインターフェースを通してシステムバス１２１へ接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、典型的に、インターフェース１５０などのリムーバブルなメモリインターフェースによってシステムバス１２１へ接続される。
【００２７】
上述し図１に示したドライブおよびドライブに関連付けられたコンピュータストレージ媒体は、コンピュータ１１０に、コンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータのストレージを提供する。例えば、図１では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして示される。これらのコンポネートは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであるか、異なることに留意されたい。本明細書において、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、異なる番号を与えられ、少なくともそれらが異なる複製品であることを示している。キーボード１６２およびマウス、トラックボール、またはタッチパッドなどと一般的に呼ばれるポインティングデバイス１６１によって、ユーザはコマンドおよび情報をコンピュータ２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイステイック、ゲームパッド、衛星パラボラアンテナ、またはスキャナなどが含まれる。これらおよび他の入力装置は、システムバスに結合されるユーザ入力インターフェース１６０を通して処理ユニット１２０へ接続されることが多いが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造によって接続されてもよい。また、ビデオインターフェース１９０などのインターフェースを介して、モニタ１９１または他種のディスプレイ装置が、システムバス１２１に接続される。モニタに加え、コンピュータには、出力周辺インターフェース１９５を通して接続することができるスピーカ１９６およびプリンタ１９７などの他の周辺出力装置が含まれてもよい。
【００２８】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作する。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の共通ネットワークノードであり、図１には１つのメモリストレージ１８１のみが示されているが、コンピュータ１１０に関する上述した要素の多くまたはすべてを典型的に含む。図１に示した論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１および広域エリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含む。このようなネットワーク環境はオフィス、企業規模のコンピュータネットワーク、イントラネットおよびそのインターネットで通常のものである。
【００２９】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインターフェースおよびアダプタ１７０を通してＬＡＮ１７１へ接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は典型的に、モデム１７２またはそのインターネットなどのＷＡＮ１７３上に通信を確立するための他の手段を含む。内部または外部モデム１７２がユーザ入力インターフェース１６０、または他の適切な機構を介してシステムバス１２１へ接続される。ネットワーク環境では、コンピュータ１１０またはその一部に関連して示したプログラムモジュールがリモートメモリストレージに格納される。制限ではなく例として、図１は、メモリ装置１８１に常駐するものとしてリモートアプリケーションプログラム１８５を示す。示されたネットワーク接続は、例であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよいことが理解されよう。
【００３０】
いくつかの態様では、フリーハンドの入力をデジタルでキャプチャするために、ペンデジタイザ１６５およびこれに付随するペンまたはスタイラス１６６を提供する。ペンデジタイザ１６５とユーザ入力インターフェース１６０との間の直接接続を示すが、実際には、無線での技法を含む任意の技法によって、ペンデジタイザ１６５は、処理ユニット１１０、パラレルポートまたは他のインターフェースおよびシステムバス１２１に直接結合されてもよい。また、ペン１６６は、それに関連付けられたカメラおよびカメラによってキャプチャされた画像情報を無線でバス１２１とやり取りするインターフェースへ無線で送信するためのトランシーバを有する。さらに、ペンはカメラの他にまたはその代わりに、加速度計、磁力計、および回転儀を含む電子インクのストロークを判定するための他の感知システムを有する。
【００３１】
示されたネットワーク接続は、例示的であり、コンピュータ間の通信リンクを確立するための他の技法を使用することができることが理解されよう。ＴＣＰ／ＩＰ、イーサネット(登録商標)（Ｅｔｈｅｒｎｅｔ(登録商標)）、ＦＴＰ、およびＨＴＴＰなどの様々な周知のプロトコルのいずれかの存在が前提とされ、システムはクライアント−サーバ構成で動作することで、ユーザがウェブベースのサーバからウェブページを検索することが可能になる。従来の各種ウェブブラウザのいずれかを使用してウェブページ上にデータを表示させ、操作することができる。
【００３２】
図２は、本発明の各種態様に係り、使用することができる具体的なタブレットＰＣ２０１を示す。図１のシステムにおける機構、サブシステム、および機能のいずれかまたはすべてが、図２のコンピュータに含まれることができる。タブレットＰＣ２０１は、例えばデジタルフラットパネルディスプレイであり、好ましくは液晶ディスプレイ画面である大型のディスプレイ面２０２を含み、複数のウインドウ２０３をディスプレイ面２０２に表示する。スタイラス２０４を使用すると、ユーザは、デジタル化表示面２０２に、選択、強調表示および／または書込みをすることができる。適切なデジタルディスプレイ面２０２の例には、ムトー（Ｍｕｔｏｈ）またはワコム（Ｗａｃｏｍ）のペンデジタイザのような電磁的なペンデジタイザが含まれる。他の種類のペンデジタイザ、例えば、光デジタイザを使用してもよい。タブレットＰＣ２０１は、データの操作、テキストの入力、図面の作成、および／または表計算プログラム、ワードプロセッシングプログラムなどの従来のコンピュータアプリケーションのタスクの実行のために、スタイラス２０４を使用して行われたジェスチャを解釈する。
【００３３】
スタイラス２０４には、１つまたは複数のボタンまたは他の機構を装備し、その選択能力を補助してもよい。一実施形態において、その一端が書込み部［筆記部］を、もう一端が「消しゴム」端部を構成する「鉛筆」または「ペン」としてスタイラス２０４を実装することもでき、ディスプレイを消しゴムが横断すると、ディスプレイの一部分が消去されるということを示す。マウス、トラックボールなど他の種類の入力装置を使用することも可能である。さらに、ユーザ自身の指をスタイラス２０４にすることも可能であり、タッチセンシティブまたは近接センシティブなディスプレイ上に表示された画像のある部分を選択または示すことを可能である。結果的に、「ユーザ入力装置」という用語は、ここで使用されるように、広い定義を有することを目的としており、スタイラス２０４のような公知の入力装置の多くの変形を包含する。領域２０５は、ユーザが、スタイラス２０４が表示面２０２と接触する場所を決定することを可能にするフィードバック領域または接触領域を示す。
【００３４】
各種実施形態において、本システムは、インクをキャプチャし、処理し、記憶するためにアプリケーションプログラムが使用できる、１組のＣＯＭ（コンポーネントオブジェクトモデル）サービスとして、インクプラットフォームを提供する。１つのサービスによって、１つのアプリケーションが、開示されたインクの表現を使用して、インクを読み取ること、および書き込むことができる。インクプラットフォームは拡張マークアップ言語（ＸＭＬ）に似た言語を含むマークアップ言語を含むこともできる。さらに、システムは、別の実装として別のＤＣＯＭを使用してもよい。マイクロソフトコーポレーション（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）のＷｉｎ３２プログラミングモデルおよびＮｅｔプログラミングモデルを含むさらに他の実装を使用してもよい。
【００３５】
ジェスチャ
ジェスチャとは、あるアクションを呼び出す方法であり、ツールバーのボタンをクリックすることか、またはキーボードのショートカットをタイプすることに類似している。ジェスチャは、（これに制限されないが、マウス、スタイラス、および／または指を含む）ポインティングデバイスで実行することもできる。ジェスチャは、ポインティングデバイスに関連した形状を有する。形状は、点（例えば、マウスのボタンをクリックすること）のように簡単であってもよく、あるいは一連の動きのように複雑であってもよい。ジェスチャは、形状に関連した位置も有する。この位置を使用してジェスチャの範囲、目標、および／または意味を決定づけることもできる。
【００３６】
フリックジェスチャ
ジェスチャは、何年もの間、コンピューティングシステムで使用されてきた。しかし、多くの開発者およびエンドユーザは、その難しさおよび複雑さのためにジェスチャを利用することができない。例えば、ジェスチャ認識エンジンは、ジェスチャを認識するときに、あまりにも多くの偽陽性および偽陰性に煩わされる。これらの偽陽性（ユーザの入力がジェスチャとして意図されていないときに、システムがその入力をジェスチャであると判定する場合）および偽陰性（ユーザがジェスチャを実行しようと試みたときに、システムがユーザの入力をジェスチャではないと判定する場合）は、開発者およびエンドユーザを一様に苛立たせる。
【００３７】
本明細書において説明したように、フリックジェスチャは、ポインティングデバイスの単一な動きを含む簡単なジェスチャである。フリックジェスチャは、ユーザにとって記憶および実行することが容易である。ユーザがフリックジェスチャを習得すると、ジェスチャを複数の使用法に応用し、異なるタスクを達成することができる。また、フリックジェスチャは、システムが認識しやすく、他のアクション（ドラッグ、選択など）と区別することも容易である。
【００３８】
開発者および／またはユーザはフリックジェスチャと動作を関連させることができる。これらの動作は、前方、後方へのナビゲーション、上方または下方へのスクロール、アプリケーションの変更、右クリック（スタイラスベースのシステムでは、常に存在しても、あるいは存在しなくてもよい）、および任意のアプリケーションコマンドを含む。任意のアプリケーションコマンドとは、アプリケーションに関するコマンドであり、アプリケーション自体に固有で、他のアプリケーションには一般的に使用できないコマンドである。さらに、フリックジェスチャは、所定の意味を有する必要はなく、むしろ開発者またはユーザがカスタマイズして、ユーザがキーボードショートカットまたはマクロに素早くアクセスできるようにキーまたはキーの組合せを実行することもできる。ジェスチャを有効にすることの１つの利点は、ジェスチャによってユーザが、より高い生産性を感じることができることであり、キーボードを使用しないときに感じる非生産的な感情を解消することができることである。
【００３９】
オペレーティングシステム内の全アプリケーションとフリックジェスチャの関連した機能を一致させてもよい。あるいは、フリックジェスチャは、それに関連する機能のコンテクストであってもよい（フリックジェスチャに関連し結果として起こる動作は、フリックジェスチャが生じたアプリケーションに基づいて変わる）。
【００４０】
また、フリックジェスチャは、アプリケーション内の位置（例えば、タイトルバー内）特有であるか、または選択が行われたか否か（例えば、ジェスチャは、カット、コピー、ペーストおよび／またはペーストの特別な動作を実行してもよい）に特有であってもよい。さらに、またはあるいは、フリックジェスチャに関連付けられたどのアクションを実行すべきか判定するのにコンピュータの状態を使用してもよい。例えば、現在選択されているオブジェクトの色、どのユーザがシステムにログインしているか、システムに外部のモニタが接続されているか否か、など、要するに、コンピューティングシステムまたはオブジェクトのあらゆるの状態または状態のあらゆる組合せを使用して、あるフリックジェスチャに応じ、どのアクションを実行するかを判定することができる。
【００４１】
さらに、異なる入力装置が、フリックジェスチャに関連付けられたアクションを変更し得る。例えば、スタイラスによって実行したときのフリックジェスチャとアクションの第１のセットを関連付けることができる。別のポインティングデバイスによって実行したときのフリックジェスチャとアクションの第２のセットを関連付けることができる。アクションのセットの数は、異なる入力装置の数によって変えることができる。
【００４２】
さらに、ホットゾーン内のあるフリックが、さらに別の動作を有する場合に、そのホットゾーンを有効にしても、しなくてもよい。ホットゾーンは、ディスプレイメニューおよび／またはラジアルメニューの特定の領域を含んでもよい。
【００４３】
フリックジェスチャは方向独立型でもよく、または方向特定型でもよい。方向特定型である場合は、フリックが描かれる方向によってその結果を判定する。フリックジェスチャの特徴は、方向に基づいて変わってもよく、または変わらなくともよい。例えば、システムは、フリックジェスチャを認識するパラメータを１セットだけ有することができる。あるいは、システムは、フリックの方向に応じて変わる任意の数のパラメータを有し、左右の利き手、スタイラスの角度等を適応させることができる。これらのパラメータを変更して、ある特定の方向のフリックジェスチャを実行しやすくさせてもよい。
【００４４】
ユーザがフリックジェスチャの実行方法を習得すると、ユーザには、利用可能な各々の方向に関連付けられたアクションを学ぶことだけが求められる。各々の方向に関連付けられたアクションは、カスタマイズすることが可能であり、ユーザは、パーソナライズされ最適化された経験を有することができる。
【００４５】
フリックジェスチャは、単独で使用してもよい。あるいはフリックジェスチャは、組み合わせて追加のアクションを実行してもよい。例えば、上向きのフリックジェスチャが、ページアップのアクションを実行し、両方とも上方向の２回のフリックジェスチャが、文書最上部に移動する移動アクションを実行してもよい。
【００４６】
代替実施形態では、任意の移動および時間閾値を満たしつつ、スタイラスのボタンを押すことによってか、またはマウスの右マウスボタン（補助的なマウスボタン）を押すことによって、フリックジェスチャを可能にすることができる。しかし、フリックジェスチャの１つの利点は、モードを変更することなく、左マウスボタンクリックまたはスタイラスまたは指でフリックジェスチャを実行できることである。フリックジェスチャは、ユーザの生産性を上げること、またユーザが、これまでに可能であったレベルより効果的なレベルで、デスクトップおよびアプリケーションと対話できるようにすることができる。ジェスチャは、ユーザが顕著な利益を得るのに最低限のレベルのトレーニング／記憶さえすればよいように設計される。すなわち、ユーザがジェスチャを習得すると、ユーザには、方向−アクションの関連付けを習得することのみが求められる。通常のマウスまたはスタイラスの動きとフリックジェスチャとは、様々な判定基準およびフリックジェスチャが受ける制約に基づいて区別することができる。
【００４７】
フリックジェスチャによって、ユーザが、スクロールバーまたはナビゲーションボタンによるターゲッティングを不要にすることができる。これは、ハイパーリンクがある文書の読取もしくはナビゲート、またはハイパーリンクがない文書の読取もしくはナビゲートを含んでもよい。この種類の文書を読取ることは、オンラインおよびオフラインで実行できる。加えて、カット、コピーおよびペーストを含む一般のアクションもフリックジェスチャを使用して実行することができる。
【００４８】
フリックジェスチャの判定
フリックジェスチャは、ユーザが、ペンを画面に対して単にフリックするだけで実行でき、実装部（先端または底部）によって、ペンのいずれかの有効部分を使用することもできる。例えば、ユーザがフリックジェスチャを実行する間、ペンボタンをホールドするように求めるモード要求をする場合はあるが、いずれかのモードを入力することをユーザに求めず、自然なモードでフリックジェスチャを実行することができる。フリックジェスチャは、８方向（例えば）で行うことができ、各フリックはこの８方向のうちの１つになる。フリックジェスチャの発生を、物理的または論理的なｘおよびｙ座標のプロファイルと、時間に対する図表で示された圧力（または位置）に基づき判定することができる。要するに、フリックジェスチャが起こったか判定するのに使用することができる３つの基本的な特徴には、フリックの方向、フリックの動き、およびフリックのタイミングが含まれる。動きの閾値は、例えば、１ｃｍより大きく、時間の閾値は０．２ｍｓより大きくてよい。当然、これらの変数は、全ユーザに適応するよう変えることができる。これらの特徴を使用して、システムは閾値と比較してより迅速にフリックの他の面を計算できる。例えば、システムは、速度、加速度、曲率、揚程等を計算することができ、これら導出値または数値のセットを用いて、ユーザがフリックジェスチャを実行したか否かを判定する。
【００４９】
フリックジェスチャは、二重作動（ダブルタップまたはダブルクリック）、プレスアンドホールド、ホールドアンドドラッグ、および他のジェスチャを含む他のアクションとは別に判定されてもよい。
【００５０】
ニューラルネットワークといった他の方法を用いて、３つの基本特性から導出された入力特徴の組合せに基づきフリックジェスチャを分類することもできる。
【００５１】
これらの判定基準を用いてフリックジェスチャが起こったか否かを判定することの利点の１つは、フリックジェスチャの検出時間を最小にすると同時に、偽陰性および偽陽性も最小にすることである。これら利点は、組合わさって、システムの応答性を全体として向上させる。例えば、あるフリックが生じたか否かを判定する手順は、あるフリックがフリックジェスチャの資格を満たさないことを迅速に判定し、入力装置の動きが入力装置の通常の動きとして取り扱われることができるように、組織されてもよい。
【００５２】
本発明の態様には、システムが、フリックが本当にフリックジェスチャであるか否かを判定している間に、入力装置の通常のアクションと関連付けられたフリックの動きおよび／またはアクションをレンダリングすることが含まれる。または、本発明の態様は、システムが、フリックジェスチャが起こったか否かを判定するまで、（ユーザが動作させたポインティングデバイスより受け取った）入力情報の処理またはレンダリングを阻むことを含んでもよい。後者のアプローチは、ユーザへのフィードバックに僅かな視覚的な遅れを起こすことがあるが、これにより通常の入力で操作されるオブジェクトが存在する状態で、ユーザがフリックジェスチャを実行する能力を高めることができる。例えば、オブジェクトの上方で実行されたフリックは、通常の入力として処理され、その結果、フリックジェスチャが意図されていても、オブジェクトはドラッグおよびドロップされる。従って、これらの本発明の代替態様では、システムは、パケットがフリックジェスチャであるか否かを判定するまで、（フリックジェスチャである可能性、またはフリックジェスチャでない可能性のある）パケットをホールドすることができる。
【００５３】
図３はフリックジェスチャに使用できる様々な方向例を示す。全方向のグループが、領域３０１により示される。４つの基本領域３０２〜３０５と、４つの対角領域３０６〜３０９を示す。システムは、フリックジェスチャが移動した方向の判定に関して、８つの領域全てを同一のものとして処理してよい。あるいはいくつかの領域（例えば、主要な方向）について、ユーザの入力が、対角方向のものがこれらの方向のいずれか１つに入るように分類するようにバイアスをかけてもよい。異なる方向の数は、固定されても、変更可能であってもよい。例えば、６または１２、あるいはいずれかの方向数を、ユーザが利用できる方向数として交互に用いることもできる。
【００５４】
フリック方向を判定するために、ペンダウン点は、円の中心を表し、例えば、それぞれが円の４５度部分である、中心を囲む８つの同形で等しく区切られた領域がある。これらの領域はタブレットの方向性には依存しておらず、従ってタブレットが回転しても回転しない。
【００５５】
領域は４５度に制限される必要はなく、アプリケーションに応じてより大きくも、または小さくもできる。しかし、システム全体を通してデフォルトとして使用するものは、当初４５度に設定することができる。
【００５６】
フリックジェスチャは、定義によれば、ペンダウン（または左マウスクリック）点が中心であることから、図３に示す円の中心から開始され、フリックと呼ばれる短く、迅速で、直線のストロークをペンダウン点に向けて引かれる。フリックが短く、直線であると定義されていることから、フリックは領域の１つの中に収まる。線が引かれた領域がどこであっても、始動したアクションを判定することができる。フリック領域は、ストロークがフリックの資格を満たしている場合（本明細書に記載したような直線性、長さおよび速度要件を含んでも、含まなくともよい）に、画面と接触しているストロークの開始点と終点とを結ぶことで決定される。フリックが領域を分離している完全線にかかった場合に、フリックは領域、非対角領域、または水平または垂直方向を表す領域に初期設定されてもよい。
【００５７】
フリックジェスチャを正しく認識された後、直ちにフィードバックがユーザに対し行われても、または行われなくともよいが、この場合フィードバックはユーザが実行したフリックジェスチャが認識されたこと、およびメッセージがオペレーティングシステムまたはアプリケーションに送られることを示す。フィードバックはまた、始動したアクションを示してもよい。このフィードバックは、これから起こるアクションを意味するものではなく、成功したフリックが認識され、送られることのみを意味している。例えば、ユーザがページダウンフリックジェスチャを実行し続け、ユーザがページの一番下に達すると、ユーザはページをそれ以上下向きにスクロールできないためにアクションは生じないものの、それでもユーザは正確なフィードバックを得るだろう。
【００５８】
このフィードバックは、ジェスチャが成功裏に認識されると直ちに現れることもあり、短時間の間（ほぼ５００ｍｓ）留まることがあっても、時間がたつのに伴い消滅する。代わりに、フィードバックが提供されなくてもよい。さらに、追加の代替的な態様においては、フィードバックは、アニメーション化されてもよく、フリックジェスチャが成功裏に認識されたことを直ちにユーザに伝えることができる。アニメーションは、認識したフリックジェスチャに関連した方向のフィードバックをユーザに提供しても、しなくてもよい。
【００５９】
図４は、フリックが生じたか否かを判定する手順を示す。ステップ４０１において、ペンダウンイベントか、またはボタンダウンイベントが生じる。次のステップ４０４において、システムは、動きの閾値を超える（例えば、２〜５ｃｍを超える）動きがあったか否かを判定する。このような動きがない場合、システムは、受信している入力が、ステップ４０５に示されたような何か他のアクションまたは選択であると判定することができる。ステップ４０４から閾値を超える動きがあった場合、システムは、入力装置の速度が閾値（例えば、最速速度より２０％以下か、または毎秒５ｃｍ以下）未満であるか否かを判定する。この速度の低下は、短い間隔（１０〜２００ミリ秒）での速度の低下にセンシティブであっても、なくてもよい。代わりに、プロセスは、認識したジェスチャの速度が低下しているか否かを判定してもよい。
【００６０】
ステップ４０６で速度が低下しない場合、ステップ４０７において、別のもう１つのアクションまたは選択が判定される。ステップ４０６で速度が低下している場合、ステップ４０８でフリックジェスチャが生じたと判定する。現在の位置は、フリックのパスに沿ったすべて（いずれか）の位置であると考えてもよく、その位置は、これに限定されないが、スタイラスまたは指を画面から持ち上げた位置か、スタイラスまたは指をマウスボタンから放した位置を含む。
【００６１】
下記に、図４のプロセスに任意で追加できることを説明する。ステップ４０１から、システムは、ペンが置かれた位置がインク領域内であったか否かを判定することもできる。インク領域内であった場合、システムは、ペンを置くイベントがあったとして、ステップ４０３に示したように、インクの作成と関連付ける。これは、追加動作（例えば、実際にインクを作成すること、インクを選択すること、またはインクを消去すること）を含んでも、含まなくてもよい。
【００６２】
別の任意のステップは、ステップ４０９を含む。ステップ４０９において、システムは、フリックジェスチャのパスが相対的に直線であるか否かを判定する場合がある。これは、そのジェスチャの全ポイントが、最初の接触ポイントから所定の角度内にあるか否かを判定することを含んでもよい。最初の角度は、４５度以下の角度を含む場合がある。ポイントが所定の位置内にない場合、プロセスは、ステップ４０１の入力が、フリックジェスチャではないと結論づける。
【００６３】
さらに別の任意のステップの一組（４１１と４１２）は、ポインティングデバイスが画面に接触する前および／または接触した後に、その運動を分析することを含む。例えば、スタイラスが画面に先をつけるか、画面から離れた後に、そのスタイラスがいくらかの間隔を直線の状態であり続けることを通知することによって、検出アルゴリズムの精度を上げることもできる。ステップ４０９および４１２の手法は、フリックジェスチャではないフリックを素早く除外するのに役立つ。代わりに、（この代替的な手法は、以前に拒絶したフリックジェスチャとしてフリックを解釈することができるために）より複雑で機能的には遅くなるが、ステップ４０９および４１１の手法は、ユーザの動きへの許容度を大きくしてもよい。
【００６４】
成功したフリックが行われると、システムは、システムの他の態様またはアプリケーションに、フリックジェスチャが生じたことを知らせることができる。アプリケーションが、このアクションに関連した挙動を行うことができるように、メッセージが送られ、挙動が割当てられていない場合、フリックアーキテクチャは、アプリケーションが解釈するためのデフォルト値を送る場合がある。例えば、バックコマンドがアプリケーションに送られた場合、これを、ブラウザでのバックコマンドとしてか、またはデータベースアプリケーションでの以前のエントリとして解釈することができる。具体的には、さまざまな異なるアプローチをフリックジェスチャの扱いに適用することができる。第１に、オペレーティングシステムは、フリックジェスチャを解釈し、扱うことができる。セマンティックへの所与の方向からのマッピングは、システムによって実行または省略されてよい。第２に、フリックアクションへのフリックのマッピングは、オペレーティングシステム内でなされてもよいが、アプリケーションまたはフリックを扱うためのアプリケーションに送られてもよい。システムは、（所定の領域かフリックの正確な検出角度のどちらかを示すことによって）フリックのオリジナルの方向のみを１つまたは複数のアプリケーションプログラムに渡してもよく、セマンティックを渡してもよい。あるいは、方向とセマンティックの両方を渡してもよい。第３に、システムは、フリックをアプリケーションに渡してもよい。または、１つのアプリケーションまたは複数のアプリケーションが、フリックをフリックジェスチャとして解釈するアプリケーションにフリックを渡してもよい。アプリケーションプログラムまたは複数のプログラムにより、所定の領域、正確な角度、セマンティックメッセージ、または３つのうちの何らかの組合せを解釈することができる。次いで、１つのアプリケーションまたは複数のアプリケーションは、フリックジェスチャを扱うか、またはその扱いのためにオペレーティングシステムへ送り返すことができる。
【００６５】
フリックジェスチャは、フリックのペンダウン位置か、または現在の焦点、フォアグラウンドアプリケーション、もしくはカーソルの位置に適用されてよい。フリックジェスチャを、ナビゲーションに限定せず、他の動作を行うために使用することもできる。例えば、スタイラスが接触している画面の位置で右クリック動作を実行するフリックジェスチャをユーザが望む場合がある。
【００６６】
開発者は、アプリケーション内またはスクロールバーなどのアプリケーションの特定のエリア内でフリックジェスチャをオフにすることも可能である。加えて、開発者は、フリックジェスチャをカスタマイズすることを防止するか、または代わりに、フリックジェスチャをカスタマイズすることを可能にしてアプリケーション内で特定のアクションを起こすようにすることができる。さらに、フリックジェスチャは、アプリケーション内で、カスタムフィードバックを提供することが可能であっても、可能でなくてもよい。
【００６７】
トレーニング
図５は、フリックジェスチャを行うことができるように、ユーザをトレーニングする例示的なプロセスを示す。いくつものプロセスを使用して、フリックジェスチャを行うためにユーザをトレーニングすることができ、その多数のプロセスを、直接のステップおよび任意のステップを用いて図５に示す。さらに、システムは、フリックジェスチャをどのように行うかについてのトレーニングを提供することなく、本明細書中で説明したようにフリックジェスチャを行ってもよい。
【００６８】
ステップ５０１において、システムは、個別指導プロセスを始める。ステップ５０５において、システムは、ユーザがフリックジェスチャをN回（５回か１０回程度）実行したか否かを判定する。実行した場合、システムは、個別指導プロセスをステップ５１０で終了する。ステップ５０５において実行していないと判定した場合、システムは、ユーザをトレーニングするために、より多くのフリックジェスチャを要求する。あるいは、ステップ５０９で、ユーザが、さらなるトレーニングから抜け出ることを認めてもよい。
【００６９】
図５は、トレーニングステップに含まれる多数の任意の追加コンポーネントも示す。ステップ５０２において、システムは、ユーザがフリックを練習できるエリアを提供することができる。ステップ５０３において、システムは、フリックジェスチャの実行の仕方をユーザに命令することができる。ステップ５０４と５０８において、システムは、図４の閾値を修正して、フリックジェスチャの認識を容易にするか、またはユーザが実行しているアクションに近いモデルにすることができる。ステップ５０６において、システムは、ジェスチャを繰り返すことをユーザに要求してもよい。ステップ５０６でジェスチャを繰り返す要求の代わりに、または要求に加えて、システムは、ジェスチャが正しく実行されたことを示すものを表示してもよい。ステップ５０７において、システムは、フリックジェスチャの適切な実行の仕方に関するユーザへの命令を繰り返すこともできる。この命令は、一般的であってよく、またはフリックジェスチャを実行することへの以前の一つあるいは複数の試みに基づき、ユーザができる特定の改善についての説明を含んでもよい。例えば、プロセスは、フリックジェスチャが適切に実行されたことを示してもよい。あるいは、フリックジェスチャにフリックを成功裏に実行するのを支援するヒント（フリックをより速く、またはフリックをより真直ぐになど）を提供する。
【００７０】
例示的な実装
図６は、ジェスチャレコグナイザを、他のコンポーネントとどのように統合するかについての例を示す。図６は、スタイラスまたはリアルタイムの他の入力装置からの入力を処理しようと試みるリアルタイムのスタイラスコンポーネント６０１を示す。
【００７１】
リアルタイムスタイラス（ＲＴＳ）は、所与のウインドウハンドル上のリアルタイムスタイラスイベントを所与のウインドウ入力の長方形内に提供するオブジェクトである。リアルタイムスタイラスは、追加機能を扱うプラグインのオブジェクトを加えるためのフレームワークをも考慮することができる。プラグインオブジェクトを、リアルタイムスタイラスの所望の機能性が変化するのに伴って加えること、および除去することができる。リアルタイムスタイラスは、１つまたは複数のインターフェースを有することができる。２つのインターフェースの場合、１つは同期インターフェースであり、１つは非同期インターフェースであってよい。これらのインターフェースは、プラグインがリアルタイムスタイラスに接続される位置を提供する。これらのインターフェースは、例示目的のために過ぎない。他のインターフェースを使用することもできる。
【００７２】
プラグインは、同期インターフェースおよび非同期インターフェースに取り付けることができる。プラグインとは、リアルタイムスタイラスのオブジェクトに加えることのできる機能的なコンポーネントである。リアルタイムスタイラスのオブジェクトの同期インターフェースにプラグインを取り付ける場合、これを同期プラグインと呼ぶことができる。リアルタイムスタイラスのオブジェクトの非同期インターフェースにプラグインを取り付ける場合、これを非同期プラグインと呼ぶことができる。
【００７３】
プラグインは、コレクションにグループ化されてもよい。１つまたは複数のグループで、ＲＴＳに取り付けられたプラグインのコレクションで、２つのコレクションが存在する場合、２つのコレクションは、ＲＴＳの同期インターフェースと非同期インターフェースのそれぞれと関連付けられる。各コレクションを順番に実行することができる。２つ以上のコレクションが存在する場合、そのコレクションは、ＲＴＳ（または複数のＲＴＳ）の異なるインターフェースに取り付けられているので、互いに独立してコレクションを実行することができる。各プラグインによって扱われた後で、データがＲＴＳに戻す。コレクション内のプラグインの順番は、コレクションの出力に影響を与える場合がある。
【００７４】
リアルタイムスタイラスコンポーネント６０１は、同期プラグイン６０２〜６０４と非同期プラグイン６０５〜６０６を含むことができる。プラグインは、プラグインコレクションにグループ化される。同期プラグイン６０２〜６０４（例えばダイナミックレンダラを含む）は、迅速に入力を処理する必要があるプラグインに関する。非同期プラグイン６０５〜６０６は、リアルタイムスタイラスからの情報を非同期ベースで処理することができる。
【００７５】
ジェスチャレコグナイザ６０５にフリックジェスチャレコグナイザを配置することができ、非同期スレッドで処理することができる。代わりに、フリックジェスチャレコグナイザは、他の同期プラグインとともに同期スレッドに配置することもできる。同期スレッドに配置した場合、フリックジェスチャレコグナイザ６０３は、リアルタイムスタイラス６０１から入力された情報が追加のプラグインによって処理され、同期スレッドに送られる前に、この入力を直ちに処理することができる。フリックジェスチャとして認識されなかったジェスチャは、非同期スレッドのジェスチャレコグナイザ６０５によって認識されねばならない。
【００７６】
本発明を、好ましく例示的な実施形態の観点から説明した。この開示を参照することによって、当業者は、添付請求項の範囲および精神から逸脱しない多数の他の実施形態、変更形態、および変形形態を考案することができる。
【符号の説明】
【００７７】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定不揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバブルな不揮発性インターフェース
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光ディスクドライブ
１５６  光ディスク
１６０  ユーザ入力インタフェース
１６１  マウス
１６２  キーボード
１６５  デジタイザ
１６６  ペンまたはスタイラス
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域エリアネットワーク
１８０  リモートコンピュータ
１８１  メモリ
１８５  アプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  スピーカ
１９７  プリンタ
２０１  タブレットＰＣ
２０２  ディスプレイ面
２０３  複数のウインドウ
２０４  スタイラス
２０５  領域
３０１  領域
３０２  基本領域
３０３  基本領域
３０４  基本領域
３０５  基本領域
３０６  対角領域
３０７  対角領域
３０８  対角領域
３０９  対角領域
６０１  リアルタイムスタイラスコンポーネント
６０２  動的表現装置
６０３  フリックジェスチャレコグナイザ
６０４  他の同期プラグイン
６０５  ジェスチャレコグナイザ
６０６  他の非同期プラグイン
【図１】
0005542774.tif 000002
【図２】
0005542774.tif 000003
【図３】
0005542774.tif 000004
【図４】
0005542774.tif 000005
【図５】
0005542774.tif 000006
【図６】
0005542774.tif 000007