(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスに対するユーザー入力を前記コンピューティングデバイスにおいて解釈するための方法であって、
前記コンピューティングデバイスにおいて、前記コンピューティングデバイスに通信可能に結合されたユーザーインターフェース入力ハードウェアを介してユーザーによって提供される動くユーザー入力を受け取るステップであって、前記動くユーザー入力は、元のポイントから始まっている、ステップと、
前記ユーザー入力が前記元のポイントから自由形式の動き閾値距離の範囲内に留まっている間、前記ユーザー入力が受け取られたとおり、変更されない形態で、前記動くユーザー入力を、前記コンピューティングデバイス上で実行するプロセスに送るステップと、
前記元のポイントから前記自由形式の動き閾値距離を超えて、かつ溝領域に入るように、前記動くユーザー入力が動いたことに応答して、変更されたユーザー入力を前記コンピューティングデバイス上で実行する前記プロセスに送るステップであって、前記変更されたユーザー入力は、前記溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、ステップと、
前記変更されたユーザー入力を前記送るステップの後、前記動くユーザー入力が溝エスケープ閾値境界を超えて前記溝領域に対して直角に移動したことに応答して、前記動くユーザー入力を前記変更されない形態で、前記コンピューティングデバイス上で実行する前記プロセスに再び送るステップと、
前記動くユーザー入力が前記溝エスケープ閾値境界を超えて動いたポイントから第２の自由形式の動き閾値距離を超えて、かつ第２の溝領域に入るように、前記動くユーザー入力が動いたことに応答して、再び変更されたユーザー入力を、前記コンピューティングデバイス上で実行する前記プロセスに送るステップであって、前記再び変更されたユーザー入力は、前記第２の溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、ステップと
を含む方法。
【請求項２】
コンピューティングデバイスに対するユーザー入力を前記コンピューティングデバイスにおいて解釈するための方法であって、
前記コンピューティングデバイスにおいて、前記コンピューティングデバイスに通信可能に結合されたユーザーインターフェース入力ハードウェアを介してユーザーによって提供される動くユーザー入力を受け取るステップであって、前記動くユーザー入力は、元のポイントから始まっている、ステップと、
前記ユーザー入力が前記元のポイントから自由形式の動き閾値距離の範囲内に留まっている間、前記ユーザー入力が受け取られたとおり、変更されない形態で、前記動くユーザー入力を、前記コンピューティングデバイス上で実行するプロセスに送るステップと、
前記元のポイントから前記自由形式の動き閾値距離を超えて、かつ溝領域に入るように、前記動くユーザー入力が動いたことに応答して、変更されたユーザー入力を前記コンピューティングデバイス上で実行する前記プロセスに送るステップであって、前記変更されたユーザー入力は、前記溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、ステップと
を含み、
前記溝領域は、前記元のポイントに揃えて位置付けられた所定の直線的な領域である方法。
【請求項３】
コンピューティングデバイスに対するユーザー入力を前記コンピューティングデバイスにおいて解釈するための方法であって、
前記コンピューティングデバイスにおいて、前記コンピューティングデバイスに通信可能に結合されたユーザーインターフェース入力ハードウェアを介してユーザーによって提供される動くユーザー入力を受け取るステップであって、前記動くユーザー入力は、元のポイントから始まっている、ステップと、
前記ユーザー入力が前記元のポイントから自由形式の動き閾値距離の範囲内に留まっている間、前記ユーザー入力が受け取られたとおり、変更されない形態で、前記動くユーザー入力を、前記コンピューティングデバイス上で実行するプロセスに送るステップと、
前記元のポイントから前記自由形式の動き閾値距離を超えて、かつ溝領域に入るように、前記動くユーザー入力が動いたことに応答して、変更されたユーザー入力を前記コンピューティングデバイス上で実行する前記プロセスに送るステップであって、前記変更されたユーザー入力は、前記溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、ステップと、
前記動くユーザー入力が或る方向に実質的に沿った向きであると判定するステップと、
コンピューター実行可能命令が、前記動くユーザー入力が前記方向に実質的に沿った向きであると判定すると、前記溝領域を、前記向きに揃えられ、かつ前記動くユーザー入力の位置に配置された直線的な領域として確立するステップと
を含む方法。
【請求項４】
前記ユーザーによって終えられるより前に、前記動くユーザー入力がアクティブ化閾値を超えないことに応答して、前記元のポイントにおけるアクティブ化イベントを、前記コンピューティングデバイス上で実行する前記プロセスに送るステップをさらに含む請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記ユーザーによって終えられるより前に、前記動くユーザー入力がアクティブ化閾値を超えないことに応答して、送られた前記動くユーザー入力を元に戻すユーザー入力を、前記コンピューティングデバイス上で生成するステップをさらに含む請求項４に記載の方法。
【請求項６】
ユーザー入力周辺装置と、１つまたは複数の処理装置と、コンピューター実行可能命令を含む１つまたは複数のコンピューター可読媒体とを備えるコンピューティングデバイスであって、前記コンピューター実行可能命令は、前記１つまたは複数の処理装置によって実行されると、
前記ユーザー入力周辺装置から、動くユーザー入力を受け取るステップであって、前記動くユーザー入力は、元のポイントから始まっている、受け取るステップと、
前記ユーザー入力が、前記元のポイントから自由形式の動き閾値距離の範囲内に留まっている間、前記ユーザー入力周辺装置から前記動くユーザー入力が受け取られたとおり、変更されない形態で前記動くユーザー入力を送るステップと、
前記元のポイントから前記自由形式の動き閾値距離を超えて、かつ溝領域に入るように、前記動くユーザー入力が動いたことに応答して、変更されたユーザー入力を送るステップであって、前記変更されたユーザー入力は、前記溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、送るステップと、
前記変更されたユーザー入力を送るステップの後、前記動くユーザー入力が溝エスケープ閾値境界を超えて前記溝領域に対して直角に移動したことに応答して、前記動くユーザー入力を前記変更されない形態で再び送るステップと、
前記動くユーザー入力が前記溝エスケープ閾値境界を超えて動いたポイントから第２の自由形式の動き閾値距離を超えて、かつ第２の溝領域に入るように、前記動くユーザー入力が動いたことに応答して、再び変更されたユーザー入力を送るステップであって、前記再び変更されたユーザー入力は、前記第２の溝領域に沿って前記動くユーザー入力を中心に位置付けるように変更される、ステップと
を実行する、
コンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、溝メタファー（groove metaphor）を使用する瞬時パニング（instantaneous panning）に関する。
【背景技術】
【０００２】
[0001]最新のコンピューティングデバイスは、多くが従来のキーボードとマウスのメタファーを離れた様々な物理的入力デバイスを介して、ユーザーが入力を行うことを可能にし得る。例えば、最新のコンピューティングデバイスは、タッチスクリーン、タブレット、トラックパッド、または他の類似した物理的に押すことに基づく入力周辺装置を備え得る。別の例として、一部の最新のコンピューティングデバイスは、ユーザーの動きをキャプチャすることができ、その結果、コンピューティングデバイスがそれらの動きをユーザー入力に変換することを可能にする、ビデオカメラまたは静止画像カメラなどの画像キャプチャ周辺装置を備え得る。
【０００３】
[0002]しかし、そのような最新のコンピューティングデバイス上で実行されているプロセスは、そのような様々な入力周辺装置を介して入力を受け取ることに合わせて必ずしも最適化されていない可能性がある。例えば、多くのアプリケーション、オペレーティングシステム、コンポーネント、またはコンピューター実行可能命令の他の集合によって提示されるユーザーインターフェースは、ユビキタスのクリックアンドドラッグのメタファーを広範に使用する場合があり、これをいくつかの入力周辺装置を使用して実施するのは困難な場合がある。その結果、タッチスクリーンなどの代替の入力周辺装置を介してユーザー入力を受け取るコンピューティングデバイスは、ユーザーが何を実現しようと試みているのかをまず識別することによってユーザーを支援しようと努め、その後に初めて、ユーザーの入力を、しばしば変更する形で、そのようなコンピューティングデバイス上で実行されるアプリケーションプログラム、オペレーティングシステム、および他のコンピューター実行可能命令に送る解釈機構（interpretatioal mechanism）を実施してきた。そのような解釈機構は、ユーザーを苛立たせる可能性もある遅延をもたらす。
【０００４】
[0003]そのような遅延の一例は、パンする、つまり、ユーザーに表示されるグラフィカルユーザーインターフェース要素を動かすことの脈絡においてである。そのような事例において、既存の解釈機構は、ユーザーがアクティブ化を実行することを所望するのか、自由形式でパンすることを所望するのか、またはユーザーが、まっすぐ上下に、またはまっすぐ左右になど、直線的にパンすることを所望するのかを解釈機構が判定することができるまで、ユーザーの入力をアプリケーションプログラムに送ることが遅れる。このため、ユーザーが、例えば、タッチスクリーンを有するコンピューティングデバイスを利用し、タッチスクリーンをユーザーの指などを用いて押し、ユーザーの指を動かしはじめると、解釈機構は、ユーザーの指が十分な距離を動くまで待ってから、ユーザーの入力のいずれかをアプリケーションプログラムまたはオペレーティングシステムに送る。ユーザーの指が十分な距離を動いた後に初めて、既存の解釈機構は、ユーザーが、アクティブ化を実行しようと試みているのか、自由形式でパンしようと試みているのか、または、ユーザーの指は正確には直線で動いていないものの、ユーザーが直線にパンしようとしているのかをインテリジェントに判定することができる。解釈機構が、ユーザーが直線的にパンしようと試みていると判定した場合、そのコンピューティングデバイス上で実行されているアプリケーションプログラムなどに解釈機構が供給するユーザー入力は、ユーザーの指が正確には直線で動いていない場合でさえ、完全に直線のパンを示すユーザー入力であり得る。しかし、ユーザーの視点からすれば、ユーザーの指が少なくともいくらかの距離を動いてから、対応するグラフィカルユーザーインターフェース要素の動きがやっと生じるということになる。前述したとおり、そのような遅延は、苛立たせるものであり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
【課題を解決するための手段】
【０００６】
[0004]一実施形態において、ユーザー入力解釈機構が、ユーザーの入力を自由形式の動きとして、遅延なしに送ることができる。その後、ユーザー入力解釈機構が、継続するユーザー入力に基づいて、ユーザーが直線的な動きを試みていると判定した場合、ユーザー入力解釈機構は、そのユーザー入力を、自由形式の動きではなく、直線的な動きとして送ることに移行することができ、送られるユーザー入力を、ユーザー入力解釈機構によって解釈される、ユーザーによって意図される直線的な動きの方向に向けられた「溝（groove）」に制限することができる。
【０００７】
[0005]別の実施形態において、ユーザー入力解釈機構が、ユーザーの入力を、そのユーザーの入力が最初に受け取られた初期ポイントを取り囲む閾値をそのユーザーの入力が超えない限り、自由形式の動きとして解釈することが可能である。ユーザーの入力が、そのような閾値を超えて移動を進める場合、ユーザー入力解釈機構は、範囲内でそのユーザーの入力が依然として自由形式の動きとして解釈される定められた領域を確立することが可能である。同様に、そのような閾値を超えると、ユーザー入力解釈機構は、直線的な向きにされるとともに、その範囲内でそのユーザーの入力が、直線的な動きであることが意図されるものと解釈され、同様の様態で送られることになる、「溝」領域を同様に確立することが可能である。
【０００８】
[0006]さらなる実施形態において、ユーザー入力解釈機構が、ユーザーの入力を、直線的な動きであることが意図されるものと解釈した後、そのユーザーの入力が、先行する直線的な動きの方向に対して直角に、閾値距離を超えて動いた場合、そのような解釈は非アクティブ化にされることが可能である。そのような場合、そのユーザーの入力は、その時点におけるそのユーザーの入力の位置を取り囲む領域内で、自由形式の動きとして再び解釈され得る。そのユーザーの入力が、その領域を超えて動いた場合、そのユーザーの入力は、自由形式の動きの既定の領域、および直線的な動きの既定の溝領域に鑑みて再び解釈され得る。
【０００９】
[0007]さらに別の実施形態において、ユーザーの入力を自由形式の動きとする解釈と、ユーザーの入力が直線的な動きに制限されるものとする解釈の間で移行する際、ユーザーの入力が直線的に制限される溝は、ユーザーの入力が最初に受け取られた初期ポイントと揃えられることが可能であり、送られるユーザー入力は、ユーザー入力の現在の位置からそのような溝に「急に戻される」ことが可能であり、またはユーザーの入力が直線的に制限される溝が、ユーザーの入力の現在の位置と揃えられることが可能である。同様に、ユーザーが、短い期間にわたってだけ入力を与えた場合、またはユーザーの入力が、アクティブ化閾値を超えて動かなかった場合、ユーザーは、何も動かすことを意図しておらず、ユビキタスの「マウスクリック」に比類し得るように、アクティブ化イベントを実行することを代わりに意図していたという判定が行われ得る。そのような場合、ユーザー入力解釈機構によって送られた動きが、元に戻され得る。そのようなアクションは、ユーザーによって動かされることが決して意図されていなかったビジュアルユーザーインターフェース要素が、実際、わずかに動いて、その後、それらの要素の元の位置に戻ることをもたらし得るが、そのような活動は、その要素が、実際、動かされ得るという視覚的示唆をユーザーに与えることが可能であるため、実際には、有益であり得る。
【００１０】
[0008]この概要は、詳細な説明において後段でさらに説明される概念の選定を、簡略化された形態で導入するように与えられる。この概要は、主張される主題の重要な特徴、または不可欠な特徴を特定することは意図しておらず、主張される主題の範囲を限定するのに使用されることも意図していない。
【００１１】
[0009]さらなる特徴および利点が、添付の図面を参照して進められる以下の詳細な説明から明白となろう。
[0010]以下の詳細な説明は、添付の図面と併せて解釈されると、最もよく理解さ
れ得る。
【図面の簡単な説明】
【００１２】
【図１】[0011]例示的なコンピューティングデバイスを示すブロック図である。
【図２】[0012]例示的な入力解釈機構の動作の視覚化を示すブロック図である。
【図３】[0013]例示的な入力解釈機構の動作の別の態様の視覚化を示すブロック図である。
【図４】[0014]例示的な入力解釈機構を示す流れ図である。
【図５】[0015]例示的な入力解釈機構の状態図である。
【発明を実施するための形態】
【００１３】
[0016]以下の説明は、ユーザーに表示されている１つまたは複数のグラフィカルユーザーインターフェース要素をパンすること、または動かすことの脈絡でユーザーから受け取られる入力の解釈に関する。ユーザー入力解釈機構（interpretatioal mechanism）は、初期ユーザー入力イベントを受け取ると、いずれの動きも自由形式の動きと解釈することができ、そのようなユーザー入力を、そのようなユーザー入力が向けられるべきアプリケーションプログラムまたは他のコンピューター実行可能命令に、遅延なしに送り込むことができる。ユーザー入力が、アクティブ化閾値を超えて進まない場合、ユーザー入力解釈機構は、そのユーザーの入力をアクティブ化と解釈することができ、例えば元の入力イベントの位置に戻るように入力を自動的に生成することによって、ユーザー入力解釈機構が送った可能性があるいずれの小さな動きをも「元に戻す」ことができる。ユーザー入力の動きが、自由形式閾値を超えて進んだ場合、ユーザー入力解釈機構は、その動きを自由形式の動きと解釈すること、または、代替として、初期ユーザー入力イベントの位置から直線的に延びる「溝」領域に基づく直線的な動きと解釈し、ユーザーが、まっすぐ上下になど、直線的な方向で入力を容易に与えることを可能にすることができる。溝領域の外の領域は、自由形式領域のままであり得る。ユーザー入力が溝領域に入っていると判定された場合、ユーザー入力解釈機構は、そのユーザー入力を、その溝領域の直線的な向きに制限し、実際のユーザー入力自体は、多少不正確であり得るものの、直線的なユーザー入力を送ることができる。溝の方向に対して直角の動きが、その後、そのような溝からユーザー入力を解放することが可能であり、自由形式の動きを再開させることが可能である。そのようにして、ユーザーの入力が、ユーザー入力解釈機構によって、解釈の遅延なしに送られることが可能であるだけでなく、そのような入力が、溝領域を介してユーザーの入力を直線的な方向に制限することなどの解釈上の支援を役立てることも可能である。
【００１４】
[0017]例示の目的で、本明細書で説明される技術は、ユーザーが、１つまたは複数の指を介して入力を与えることを可能にするなどの、タッチベースのインターフェースを対象とし、１つまたは複数のユーザーインターフェース要素が動かされる、またはパンされるコンテキストを対象とする。しかし、そのような参照は、厳密に例示的であり、説明される機構を、与えられる特定の例に限定することは意図していない。そうではなく、そのような参照は、そのような参照が、当業者には直ちに明白となる概念上の枠組みを与え、したがって、説明される解釈機構の少なくとも１つの実施形態を説明するための有用な枠組みを与えるという理由で、選択されている。しかし、タッチベースのインターフェースが参照され、特に、指によってアクティブ化されるタッチベースのインターフェースが参照されるが、説明される機構は、タッチスクリーンに触れる代わりに、ユーザーが代わりに、ユーザーの手などを単に動かして妥当な入力を与える、例えば、ジェスチャインターフェースまたは３次元インターフェースを含む、他の形態のユーザーインターフェースに、変更なしに、同様に適用可能である。実際、説明される技術は、キーボード、マウス、トラックパッド、ペンベースの周辺装置、および他の類似したインターフェースなどのさらなる従来のインターフェース周辺装置を介する入力を含め、任意のユーザー入力に適用可能である。したがって、「触れる」、「押す」、または「解放する」などが後段で参照されることは、単に例示的であり、関連するインターフェースにおける任意の類似した入力を参照することを意図している。同様に、「パンすること」または「動かすこと」が後段で参照されるが、そのような参照は、説明される機構が、ビデオゲームの脈絡で２次元方向、または３次元方向の入力を与えることなどの、他のユーザー対話にも同様に適用可能であるので、やはり、単に例示的であることが意図される。したがって、「パンする」および「動かす」という用語の利用は、均等のユーザー入力を包含するものと広く解釈されることが意図される。
【００１５】
[0018]必須ではないものの、後段の説明は、コンピューティングデバイスによって実行されている、プログラムモジュールなどのコンピューター実行可能命令の概括的な脈絡で行われる。より詳細には、この説明は、特に明記しない限り、１つまたは複数のコンピューティングデバイスまたは周辺装置によって実行される動作の作用および記号表現を参照する。このため、ときとして、コンピューターによって実行されるものとして記述される、そのような作用および動作には、処理装置による、構造化された形態のデーターを表す電気信号の操作が含まれることが理解されよう。この操作は、そのデーターを変換し、またはメモリーの中のロケーションにそのデーターを保持し、このことが、コンピューティングデバイスまたは周辺装置の動作を、当業者によってよく理解されている様態で再構成する、またはそれ以外で変更する。データーが保持されるデーター構造は、データーのフォーマットによって定められる特定の特性を有する物理的ロケーションである。
【００１６】
[0019]概して、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データー型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データー構造などが含まれる。さらに、当業者は、コンピューティングデバイスが、従来のパーソナルコンピューターに必ずしも限定されず、コンピューティングデバイスには、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電子機器もしくはプログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューターなどを含む、他のコンピューティング構成が含まれることを認識するだろう。同様に、コンピューティングデバイスは、通信ネットワークを介して結びつけられた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境で機構が実施されることも可能であるので、スタンドアロンのコンピューティングデバイスに必ずしも限定されない。分散コンピューティング環境において、プログラムモジュールは、ローカルメモリーストレージデバイスと遠隔メモリーストレージデバイスの両方の中に配置され得る。
【００１７】
[0020]図１を参照すると、例示的なコンピューティングデバイス１００が示されており、コンピューティングデバイス１００上で、かつコンピューティングデバイス１００と連携して、後段で説明される機構が実施され得る。図１の例示的なコンピューティングデバイス１００は、限定なしに、１つまたは複数の中央処理装置（ＣＰＵ）１２０と、ＲＡＭ１３２を含み得るシステムメモリー１３０と、システムメモリーを含む様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１とを含み得る。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用する、メモリーバスまたはメモリーコントローラー、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかであり得る。コンピューティングデバイス１００は、グラフィックスハードウェアインターフェース１９０を含むが、以上には限定されない、ビジュアルユーザーインターフェースを表示するためなどのグラフィックスハードウェア、およびディスプレイデバイス１９１をオプションとして含み得る。さらに、コンピューティングデバイス１００は、マウス１５３、デジタルビデオカメラ１５２、および／またはタッチセンサー１５１などのユーザーインターフェース入力ハードウェアを含むことも可能である。入力ハードウェアは、周辺インターフェース１５０を介してシステムバス１２１と通信するように結合され得る。一部の事例において、入力ハードウェアは、コンピューティングデバイス１００の他の態様と並置され得る。例えば、ハンドヘルド構成またはタブレット構成において、コンピューティングデバイス１００は、タッチセンサー１５１上の接触の位置が、ディスプレイデバイス１９１によって同一の位置に表示され得る１つまたは複数のグラフィカルユーザーインターフェース要素と互いに関係付けられ得るように、タッチセンサー１５１と一体にされたディスプレイデバイス１９１を備え得る。
【００１８】
[0021]また、コンピューティングデバイス１００は、コンピューティングデバイス１００によってアクセスされ得る任意の利用可能な媒体を含むことが可能であり、揮発性媒体と不揮発性媒体、リムーバブルな媒体とリムーバブルでない媒体をともに含むコンピューター可読媒体も、通常、含む。例として、限定としてではなく、コンピューター可読媒体は、コンピューター記憶媒体と、通信媒体とを備えることが可能である。コンピューター記憶媒体には、コンピューター可読命令、データー構造、プログラムモジュール、または他のデーターなどの情報を格納するために任意の方法または技術で実施される媒体が含まれる。コンピューター記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、ソリッドステート記憶媒体、または所望される情報を格納するのに使用されることが可能であり、コンピューティングデバイス１００によってアクセスされることが可能な他の任意の媒体が含まれるが、以上には限定されない。通信媒体は、通常、コンピューター可読命令、データー構造、プログラムモジュール、または他のデーターを、搬送波などの変調されたデーター信号、または他のトランスポート機構として実体化し、任意の情報伝達媒体を含む。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、および他のワイヤレス媒体などのワイヤレス媒体が含まれる。また、前述した媒体うちの任意の媒体の組合せも、コンピューター可読媒体の範囲に含められなければならない。
【００１９】
[0022]システムメモリー１３０は、読取り専用メモリー（ＲＯＭ）１３１、および前述したＲＡＭ１３２などの揮発性メモリーおよび／または不揮発性メモリーの形態のコンピューター記憶媒体を含む。起動中などにコンピューティングデバイス１００内部の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム１３３（ＢＩＯＳ）が、通常、ＲＯＭ１３１の中に格納される。ＲＡＭ１３２は、処理装置１２０が即時にアクセス可能であり、さらに／または処理装置１２０によって現在、操作されているデーターおよび／またはプログラムモジュールを通常含む。例として、限定としてではなく、図１は、オペレーティングシステム１３４を、他のプログラムモジュール１３５、およびプログラムデーター１３６とともに示す。
【００２０】
[0023]また、コンピューティングデバイス１００は、他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピューター記憶媒体を含むことも可能である。単に例として、図１は、リムーバブルでない、不揮発性の磁気媒体から読取りを行う、またはそのような媒体に書込みを行うハードディスクドライブ１４１を示す。例示的なコンピューティングデバイスで使用され得る他のリムーバブルな／リムーバブルでない、揮発性／不揮発性のコンピューター記憶媒体には、磁気テープカセット、フラッシュメモリーカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ、他のソリッドステートストレージデバイスなどが含まれるが、これらに限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０などのリムーバブルでないメモリーインターフェースを介してシステムバス１２１に接続される。
【００２１】
[0024]前段で説明され、図１に示されるドライブ、および関連するコンピューター記憶媒体は、コンピューティングデバイス１００にコンピューター可読命令、データー構造、プログラムモジュール、および他のデーターのストレージを提供する。図１で、例えば、ハードディスクドライブ１４１が、オペレーティングシステム１４４、他のプログラムモジュール１４５、およびプログラムデーター１４６を格納しているものとして示される。これらのコンポーネントは、オペレーティングシステム１３４、他のプログラムモジュール１３５、およびプログラムデーター１３６と同一であることも、異なることも可能であることに留意されたい。オペレーティングシステム１４４、他のプログラムモジュール１４５、およびプログラムデーター１４６は、少なくとも、これらが異なるコピーであることを示すように本明細書で異なる参照符号が与えられている。
【００２２】
[0025]コンピューティングデバイス１００は、１つまたは複数の遠隔コンピューターに対する論理接続を使用して、ネットワーク１８０によって表されるネットワーク化された環境において動作することができる。コンピューティングデバイス１００は、ネットワークインターフェースまたはネットワークアダプタ１７０を介して一般的なネットワーク接続１７１に接続されているものとして示され、このネットワークインターフェースまたはネットワークアダプタ１７０は、システムバス１２１に接続される。ネットワーク化された環境において、コンピューティングデバイス１００、またはコンピューティングデバイス１００のいくつかの部分もしくは周辺装置に関連して示されるプログラムモジュールは、一般的なネットワーク接続１７１を介してコンピューティングデバイス１００と通信するように結合された他の１つまたは複数のコンピューティングデバイスのメモリーの中に格納され得る。図示されるネットワーク接続は、例示的であり、コンピューティングデバイス間で通信リンクを確立する他の手段も使用され得ることが認識されよう。
【００２３】
[0026]図２を参照すると、図示されるシステム２００が、タッチスクリーンデバイスを利用するユーザーによって、従来のファイルアイコンとして示されるグラフィカルユーザーインターフェース要素２１０が動かされる脈絡でユーザー入力解釈機構の例示的な動作を示す。最初に、ユーザーが、ファイルアイコン２１０を動かすことを所望する場合、ユーザーは、ユーザーの指などを用いて、ファイルアイコン２１０の付近データーッチスクリーンデバイスを押すことが可能である。円２１１は、ユーザーが、円２１１によって表される位置データーッチスクリーンデバイスを押すことによって生成され得るような、ユーザーの入力の位置を表す。同様に、線２１５は、ユーザーが、線２１５に沿ってユーザーの指を動かしながら、タッチスクリーンデバイスを押し続けることによって生成され得るような、ユーザーの入力のその後の動きを表す。
【００２４】
[0027]一実施形態において、領域２９１が、ユーザーの入力が最初に受け取られた位置２１１の周囲に広がることが可能であり、範囲内でユーザー入力解釈機構が、ユーザーの入力を遅延なしに送るとともに、ユーザーの入力を、さらなる編集、または変更を要求しない自由形式の動きとして扱う領域を定めることが可能である。自由形式の動き領域２９１は、ユーザーの入力が最初に受け取られた位置２１１から広がり得る自由形式の動き閾値２８０によって定められ得る。このため、図２のシステム２００によって示されるとおり、ユーザーが、例えば、位置２１１データーッチスクリーンデバイスをユーザーの指を用いて押し、その後、線２１５に沿って位置２２１までユーザーの指をドラッグしたとする場合、ユーザー入力解釈機構は、一実施形態において、そのようなユーザー入力を遅延なしに、ユーザーインターフェース要素２１０を担当するアプリケーションプログラムまたはオペレーティングシステムに送ることができる。その結果、そのようなアプリケーションプログラムまたはオペレーティングシステムは、図２のシステム２００に示されるアイコン２１０の輪郭、またはグレー表示されたバージョンをアイコン２２０として示して、ユーザーに、アイコン２１０をユーザーが「ドラッグしていること」の視覚的フィードバックを与えることができる。
【００２５】
[0028]本明細書における説明の目的で、アイコン２２０などの、アイコン２１０のグレー表示されたバージョンは、そのようなグレー表示されたバージョンが、ユーザー入力が解釈機構によって供給されるにつれ、ユーザー入力の直接の結果として生成され得るので、解釈機構がユーザーの入力を送る様態を示す。例えば、図２のシステム２００に示される特定の例において、ユーザー入力解釈機構は、線２１５に沿って位置２１１から位置２２１までドラッグする際、ユーザーの入力を遅延なしに、変更せずに送ることができる。ユーザーの入力が変更されずにそのように送られることが、そのような入力を受け取るアプリケーションプログラムまたはオペレーティングシステムが、位置２２１になど、ユーザー入力解釈機構によって受け取られた実際のユーザー入力を中心としてグレー表示されたアイコン２２０を位置付けていることによって示される。理解され得るとおり、ユーザー入力は、線２１５に沿って位置２１１から位置２２１までドラッグする際、ユーザーの動きのすべてが、前述した自由形式領域２９１内に留まるので、ユーザー入力解釈機構によって自由形式の動きと解釈され得る。このため、ユーザー入力は、機構のユーザー入力解釈が、ユーザーの意図を導き出すことが試みられるさらなるユーザー入力を待つのではなく、自由形式の動き閾値２８０範囲内のユーザーの初期の入力を、変更なしに自由形式の動きとして送るので、ユーザー入力解釈機構によって遅延なしに送られることが可能である。
【００２６】
[0029]ユーザー入力解釈機構は、ユーザーの入力が、自由形式の動きに関連する領域内に留まる限り、ユーザーの入力を自由形式の動きと解釈し続けることができる。一実施形態において、自由形式の動きに関連する領域は、単に、別段、定められない領域であり得る。
【００２７】
[0030]別のタイプの領域が、ユーザーが特定の支援された精度で動こうとする可能性がある動きの向きを、そのタイプの領域が表し得るため、「溝」領域として識別されることが可能である。例えば、１つまたは複数のユーザーインターフェース要素を上下に動かす際、ユーザーは、通常、そのようなインターフェース要素を正確に上方に、または正確に下方に動かして、左右への逸脱を回避することを所望する。このため、例えば、ユーザーが文書を読んでいたとすると、そのユーザーは、読み続けるためにその文書をまっすぐ上に、またはまっすぐ下にスクロールしようとし、左または右のいずれの動きも、ユーザーがその文書を読もうと努めることに対して紛らわしいものとなり得る。別の例として、水平の向きになっている画像の集合をユーザーがブラウズしているとした場合、ユーザーは、妥当なユーザーインターフェース要素を正確に左に、または正確に右に動かすことによって、次の画像にスクロールしようとする可能性があり、同様に、上または下のいずれの動きも、ユーザーが画像の集合をブラウズしようと努めることに対して紛らわしいものとなり得る。これらの例において、ユーザーが１つまたは複数のユーザーインターフェース要素を垂直に動かすこと、および水平に動かすことは、ユーザー入力解釈機構が「溝」メタファーを適用することによって支援可能であり、その結果、実質的に垂直であるユーザー入力などの、実質的に特定の方向に向けられたユーザーの入力が、正確に垂直に揃えられた溝に入るものと考えられてもよく、したがって、ユーザーの入力が完全には垂直でなく、左または右にわずかに逸れている場合でさえ、ユーザー入力解釈機構によって供給されるユーザー入力は、ユーザーが、そのような支援なしには自ら実現することができない正確に垂直な動きを反映するように変更または補正可能である。
【００２８】
[0031]一実施形態において、溝領域は、例えば、そのような領域を、ユーザーインターフェース要素の初期位置と揃えることによって、事前に定められ得る。このため、図２のシステム２００に示されるとおり、溝領域２９２、２９３、２９４、および２９５が、アイコン２１０の初期位置、または位置２１１におけるユーザーの入力の初期ポイントに基づいて定められ得る。そのような実施形態における残りの領域、すなわち、領域２９６、２９７、２９８、および２９９は、自由形式領域のままであり得る。さらに、そのような実施形態において、ユーザーの入力が溝領域に入ると、送られるユーザー入力をその溝領域と揃えるようにユーザー入力解釈機構によって適用され得るそのようなユーザー入力の変更は、そのようなユーザー入力によって影響されるユーザーインターフェース要素を、その溝領域に視覚的に「ジャンプして」入らせることが可能である。
【００２９】
[0032]これに対して、別の実施形態において、溝領域は、所定でなくてもよい、または向きに関してだけ所定であり、位置に関しては所定でないことが可能である。そのような実施形態において、例えば、ユーザー入力が、左または右へのわずかな人間の不正確さを除いて、実質的に垂直に向かっている場合など、ユーザーの入力が、正確に直線で動く意図を明らかにすると、溝領域が、そのユーザーの入力が、溝領域の向きで動く意図を明らかにした位置で確立され得る。そのような実施形態において、ユーザー入力解釈機構によって行われるユーザー入力の変更は、影響されるユーザーインターフェース要素のどんな類の初期の視覚的「ジャンプ」も生じさせる必要はなく、代わりに、溝領域が確立されると、単に、その後のユーザー入力を、その溝の向きでまっすぐにすることが可能である。そのような実施形態の時間的性質のため、図には特に示されないが、後段で溝領域について述べることは、具体的には、図に示される溝領域のような既成の溝領域と、履歴上のユーザー入力に基づいて動的に確立される溝領域の両方に対する参照を含むと意図される。
【００３０】
[0033]図２に再び戻ると、ユーザー入力が、例えば、ユーザーがユーザーの指をタッチスクリーン上で位置２２１から位置２３１まで動かすことによって、線２１５に沿って続いた場合、ユーザー入力はそれでも、ユーザー入力が自由形式領域２９１を離れたという事実にもかかわらず、自由形式領域２９８に入るように進んでおり、その結果、引き続き、自由形式の動きと解釈され得るため、変更されずに送られ得る。ユーザー入力の位置２３１を中心として位置付けられたグレー表示されたアイコン２３０は、アプリケーションプログラムまたはオペレーティングシステムが、ユーザー入力解釈機構から、位置２３１にあるものとしてユーザー入力を受け取り、その結果、そのユーザー入力位置に従ってグレー表示されたアイコン２３０を描くので、ユーザー入力が、変更されずに、アプリケーションプログラムまたはオペレーティングシステムに送られて、グレー表示されたアイコン２３０を生成していることを例示する。
【００３１】
[0034]同様に、ユーザー入力が、線２１５に沿って位置２３１から位置２４１まで進み続けると、このユーザー入力は、自由形式領域内に留まること、すなわち、最初、自由形式領域２９８内にあり、その後、自由形式領域２９１内に戻ることが可能であるため、自由形式の動きと解釈され続けることが可能である。したがって、ユーザー入力は、ユーザー入力解釈機構によって、変更されずに送られ続けることが可能である。このため、図示されるとおり、ユーザー入力の位置２４１が、ユーザー入力解釈機構によって、変更なしに送られ得るので、グレー表示されたアイコン２４０が、ユーザー入力位置２４１を中心とすることが可能である。さらに、ユーザー入力が、線２１５に沿って位置２４１から位置２５１まで進むと、このユーザー入力は、自由形式領域２９１内に留まり、その後、自由形式領域２９１内に入るため、同様に、自由形式の動きと解釈され続けることが可能である。その結果、そのようなユーザー入力が、グレー表示されたアイコン２５０を描くことを担うアプリケーションプログラムまたはオペレーティングシステムに、自由形式入力として変更されずに送られるので、グレー表示されたアイコン２５０が、ユーザー入力２５１の位置を中心とすることが可能である。
【００３２】
[0035]しかし、線２１５に沿って進み続けるユーザー入力が、位置２６１に到達すると、ユーザー入力解釈機構は、ユーザーが、アイコン２１０を正確に垂直に動かそうとしていると判定することができ、その結果、ユーザー入力解釈機構は、解釈機構によって送られるユーザー入力が、例えば、タッチスクリーン上で実際に与えられているユーザー入力とは異なり得るように、ユーザー入力を変更することができる。図２のシステム２００に示されるとおり、位置２６１におけるユーザー入力は、ユーザー入力解釈機構によって、変更されない形態で送られた場合、従来は、グレー表示されたアイコンが、アイコン輪郭２６０によって輪郭を示されるとおり提示されることをもたらす。アプリケーションプログラムまたはオペレーティングシステムによって表示される実際のグレー表示されたアイコン２６２は、提示されるグレー表示されたアイコン２６２が、アイコン２１０の元の位置と正確に垂直に揃えられるように、アイコン輪郭２６０の位置から逸れた位置にあることが可能である。ユーザーの視点からは、線２１５に沿って位置２５１から位置２６１までユーザー入力を与えることは、このユーザー入力が位置２６１に到達すると、結果的にもたらされるグレー表示されたアイコンを、位置２６０から、グレー表示されたアイコン２６２によって示される位置まで視覚的に「ジャンプ」させて、これにより、グレー表示されたアイコンが、アイコン２１０の元の位置と垂直に揃えられた溝に落ちたかのように見えることをもたらし得る。
【００３３】
[0036]ユーザーが、アイコン２１０などのユーザーインターフェース要素を、正確に垂直に、または正確に水平に動かすのを支援するのに、溝領域が、アイコン２１０の元の位置の真上と真下、および正確に左と右に確立され得る。このため、図２のシステム２００に示されるとおり、溝領域２９２は、溝領域２９２が、それぞれ、アイコン２１０の最左部の境界と最右部の境界の延長であり得る境界２８２と２８３によって定められるように、アイコン２１０の真上に延びることが可能である。同様に、溝領域２９４が、アイコン２１０の真下に延びることが可能であり、やはりそれぞれ、アイコン２１０の最左部の境界と最右部の境界の延長であり得る境界２８７と２８６によって定められることが可能である。さらなる溝領域２９３および２９５が、アイコン２１０の正確に水平の動きを可能にするように、それぞれ、アイコン２１０の右側と左側に延びることが可能である。アイコン２１０の右側に延びる溝領域２９３は、それぞれ、アイコン２１０の最上部の境界と最下部の境界の延長であり得る境界２８４と２８５によって境界が定められることが可能である。同様に、アイコン２１０の左側に延びる溝領域２９５は、それぞれ、アイコン２１０の最上部の境界と最下部の境界の延長であり得る境界２８９と２８８によって境界が定められることが可能である。
【００３４】
[0037]溝領域２９２、２９３、２９４、および２９５は、アイコン２１０の境界に相応する境界を有するものとして図２のシステム２００に示されるものの、説明されるユーザー入力解釈機構は、特定のサイズの溝領域によって限定されず、代わりに、範囲内でユーザーが１つまたは複数のユーザーインターフェース要素を正確に直線で動かそうと試みていると結論付けるのが適切であり得る任意の幅または任意の長さの溝領域を確立することができる。同様に、図２のシステム２００に示される溝領域２９２、２９３、２９４、および２９５は、アイコン２１０に対する溝領域２９２、２９３、２９４、および２９５の向きに関して、単に例示的であることが意図されるに過ぎない。一実施形態は、溝領域が、ユーザーがユーザーインターフェース要素を正確に水平に、または垂直に動かすことを支援するように水平、および垂直に延び得ることを企図するが、他の実施形態は、より多くの溝領域、またはより少ない溝領域を企図する。例えば、アイコン２１０の代わりに、動かされているユーザーインターフェース要素が文書のページであった場合、一実施形態は、そのような文書を読むには、さらに読むために下にスクロールするか、または特定のセクションを読み直すために上にスクロールして戻るかのいずれかのための垂直方向における正確に直線的な動きしか要求されない可能性が高いので、溝領域２９５および２９３が存在しなくてもよいことを企図する。別の例として、アイコン２１０の代わりに、動かされているユーザーインターフェース要素が、一連の水平に並べられた写真のうちの１つの写真であった場合、一実施形態は、水平に並べられた写真を閲覧するには、水平方向だけに正確に直線的な動きが要求される可能性があるので、溝領域２９２および２９４が存在しなくてもよいことを企図する。さらに別の例として、ユーザーインターフェース要素２１０が描画プログラムにおける要素であった場合、例えば、４５°対角線で、または、例えば、その描画プログラムの脈絡で実用的であり得る他の類似した角度オフセットなどで、図２のシステム２００に示される溝領域に加えてさらなる溝領域が確立されることもある。
【００３５】
[0038]図２に示されるシステム２００に戻ると、ユーザー入力が線２１５に沿って位置２６１に到達した際などに、ユーザー入力が溝領域に入ると、ユーザー入力解釈機構は、ユーザー入力解釈機構がアプリケーションプログラム、オペレーティングシステム、またはコンピューター実行可能命令の他の集合に送るユーザー入力を変更して、そのユーザー入力が、例えば、位置２６１で、溝領域２９２の中心からわずかに右にあるという事実にもかかわらず、ユーザー入力解釈機構によって供給されるユーザー入力が、溝領域２９２の中心にあるように変更され得るようにすることができる。その結果、そのような入力を受け取っているアプリケーションプログラム、オペレーティングシステム、またはコンピューター実行可能命令の他の集合は、適切なユーザーインターフェース要素を、それらのユーザーインターフェース要素の元の位置に対して正確に直線的な関係でレンダリングすることができる。このため、例えば、図２のシステム２００に示されるとおり、ユーザーの入力は、位置２６１で、アイコン２１０の元の位置の真上にはないものの、ユーザー入力解釈機構によって供給される変更されたユーザー入力は、グレー表示されたアイコン２６２を描くアプリケーションプログラムまたはオペレーティングシステムに、そのようなアイコンを、元のアイコン２１０に対して正確に直線的な関係で、すなわち、図示される例において、元のアイコン２１０の真上に描かせることが可能である。
【００３６】
[0039]前述したとおり、溝領域は、物理的な溝を模倣し、例えば、車両の車輪が、左右への走行の小さいばらつきにもかかわらず、入り込んだ溝に限定されたままであるのとほとんど同じように、ユーザー入力が、ばらつきにもかかわらず、範囲内で正確なパスに限定される領域を定めることができる。このため、図２のシステム２００に示されるとおり、線２１５に沿って位置２６１から位置２７１まで進むユーザー入力が、水平方向でわずかに逸れた場合、ユーザー入力解釈機構によって送られるユーザー入力が、線２１５によって表されるとともに、わずかな逸脱を含む実際のユーザー入力からわずかに変更され得るので、対応するユーザーインターフェース要素の、すなわち、図２に示される例でアイコン２１０の動きが、逸脱しない垂直方向で動き続けることが可能である。例えば、位置２７１におけるユーザー入力が、位置２６１におけるユーザー入力からわずかに右に逸れていることが可能である。それでも、グレー表示されたアイコン２７２は、グレー表示されたアイコン２６２と揃ったままであることが可能であり、さらにアイコン２１０の元の位置からのアイコン２１０の正確に垂直な動きを表し得る。このため、位置２７１におけるユーザー入力は、従来は、位置２７０におけるアイコンのレンダリングをもたらす可能性があったが、ユーザー入力解釈機構によって供給される変更は、代わりに、アイコンをレンダリングするアプリケーションプログラムまたはオペレーティングシステムによって受け取られるユーザー入力が変更されて、そのアプリケーションプログラムまたはそのオペレーティングシステムが、ユーザー入力が溝領域２９２の中心に位置付けられていると考え、さらに、その結果、位置２７１における実際のユーザー入力の左側にグレー表示されたアイコン２７２を生成するようになることをもたらし得る。ユーザー入力が、全体的に上向きの方向で線２１５に沿って進むと、位置２６１と比べた位置２７１の相対的な水平方向の位置によって示されるような、ユーザー入力のこれらのわずかな水平方向の逸脱が、代わりに、このユーザー入力を変更して、このユーザー入力が溝領域２９２に制限されるようにすることができ、さらに、ユーザーが、例えば、正確に垂直にアイコン２１０をドラッグすることができるようにするユーザー入力解釈機構によって解消され得る。
【００３７】
[0040]したがって、理解され得るとおり、２８０の自由形式の動き閾値が、初期のユーザー入力が変更なしに送られ、さらに、このため、遅延なしに送られることが可能であるように、ユーザーインターフェース要素の周囲の自由形式の動き領域２９１を定めることが可能である一方で、その後のユーザー入力が解析されて、そのような入力が、自由形式領域内に入るか、またはユーザーが妥当な方向で正確に直線的な動きを実行するのを支援するように確立され得る溝領域内に入るかが判定されることが可能である。そのようにして、ユーザー入力解釈機構は、ユーザーが正確に直線的な動きを実行するのを支援することができる一方で、同時に、初期遅延が生じるのを回避する。これに対して、まず待って、ユーザーが正確に直線的な動きを実行しようとするかどうかを判定する通常のユーザー入力解釈機構は、ユーザーの意図が拾い集められる十分なユーザー入力を待たなければならないので、ユーザーの入力を送る際に初期遅延を生じさせる。
【００３８】
[0041]図３を参照すると、図示されるシステム３００が、継続的なユーザー入力が、そのユーザーの入力が、正確に直線的な動きに限定されるユーザーによる意図を明らかにするものと分かった後でさえ、さらにユーザー入力解釈機構によって送られるユーザー入力が、溝領域２９２などの溝領域に限定された後でさえ、ユーザーによる、支援されない自由形式の動きに戻る意図を明らかにし得る、一実施形態による例示的な機構を示す。そのような実施形態を例示するのに、図３のシステム３００は、図２のシステム２００において前に示され、さらに前段で詳細に説明された線２１５から続けられたユーザー入力を表し得る線３１５を備える。前述し、さらに図３のシステムに示されるとおり、位置２６１と位置２７１の間で動くユーザー入力は、図２で前に示されたアイコン２１０を正確に直線的に動かすことが所望されることを示すものと解釈されることが可能であり、さらに、このため、このユーザー入力は、送られるユーザー入力が溝領域２９２の中心にあることが可能であるようにユーザー入力解釈機構によって変更され得る。このため、図３のシステム３００に示されるとおり、図２で前に示されたアイコン２１０が、溝領域２９２内で、グレー表示されたアイコン２６２および２７２によって示されるとおり、正確に垂直に動かされる。やはり、前述したとおり、ユーザー入力解釈機構は、溝領域２９２の付近のユーザー入力を、１つまたは複数のユーザーインターフェース要素を正確に垂直に動かす意図を明らかにするものと解釈することが可能であり、さらに、このため、線３１５、ならびに図３のシステム３００に示される位置２６１および２７１によって示されるような、与えられている実際のユーザー入力の水平方向のばらつきにもかかわらず、溝領域２９２の中心にあることが可能な変更されたユーザー入力を送ることが可能である。
【００３９】
[0042]しかし、一実施形態において、ユーザーの入力が、溝エスケープ閾値（groove escape threshold）を超えて動いた場合、ユーザー入力解釈機構は、そのユーザーの入力を溝領域に限定するようにもはや変更することができず、さらに、代わりに、そのユーザーの入力を自由形式で解釈することに戻ることが可能である。溝エスケープ閾値は、溝領域２９２の限界２８２および２８３などの、溝領域の限界を超える距離として確立され得、これらの限界を超えると、継続的なユーザー入力により、その溝領域をエスケープして、自由形式の動きに戻りたいと所望されることが明らかになる。したがって、図３のシステム３００に示されるとおり、溝エスケープ閾値３７０は限界３７２を確立することが可能であり、その限界３７２を超えると、継続的なユーザー入力により、溝領域２９２をエスケープして、自由形式の動きに戻りたいと所望されることが明らかになり得る。同様に、溝エスケープ閾値３７１は限界３７３を確立することが可能であり、その限界３７３を超えると、継続的なユーザー入力により、同様に、溝領域２９２をエスケープして、自由形式の動きに戻りたいと所望されることが明らかになり得る。溝エスケープ閾値３７０には、一実施形態において、そのようなエスケープ閾値が互いに独立に確立され得ることを示すように、溝エスケープ閾値３７１とは異なる参照符号が割り当てられている。このため、例えば、溝がスクリーンの端の近くに確立された場合、スクリーンの端の方向の溝エスケープ閾値は、実質的に、より小さいこと、または０であることさえ可能である一方で、反対方向の溝エスケープ閾値は、より大きいことが可能である。
【００４０】
[0043]別の実施形態において、例えば図３のシステム３００に示されるように、溝領域の限界を超える距離として溝エスケープ閾値を確立するのではなく、溝エスケープ閾値は、ユーザーが溝領域からどれだけ遠くにユーザーの入力を動かすかではなく、ユーザーが溝領域に対して直角の方向でどれだけ「きつく」ユーザーの入力を動かすかを定量化する速度ベクトルに関して確立されることが可能である。そのような実施形態を利用すると、例えば、ユーザーは長い期間にわたって例えば垂直方向でパンすることを意図していたが、そのような長い期間中、ユーザーの入力は、水平に滑り続け、その結果、例えば、溝からの距離だけに基づいていた溝エスケープ閾値を最終的に超える状況においては、ユーザーがそのように行うことを意図していなかった場合に自由形式の動きに戻ることを制限することができる。この例で、ユーザー入力が水平方向でそのように滑ることは比較的小さいので、対応する速度ベクトルも、同様に比較的小さく、このため、そのような速度ベクトルに関して決定された溝エスケープ閾値を超えず、代わりに、ユーザーが、溝に依然として限定されながら、より長い期間にわたってパンし続けることを可能にする。
【００４１】
[0044]図３のシステム３００によって示される特定の例に戻ると、システム３００における線３１５によって示されるとおり、ユーザー入力が、図示される例において、溝領域２９２に対して実質的に直角の方向で位置２７１から進んで、位置３１１に到達することが可能である。ユーザー入力が溝エスケープ閾値境界３７３を超えて進む、そのような動きは、ユーザー入力解釈機構に、そのユーザー入力をもはや変更させず、代わりに、そのような入力を自由形式入力と解釈させることが可能である。このため、グレー表示されたアイコン３１０によって示されるとおり、位置３１１におけるユーザー入力が、ユーザー入力解釈機構によって、変更されずに送られ、その結果、グレー表示されたアイコン３１０は、ユーザー入力が実際に受け取られた位置３１１を中心とする。
【００４２】
[0045]一実施形態において、ユーザー入力が、溝エスケープ閾値境界を過ぎると、ユーザー入力がその溝エスケープ閾値境界を過ぎた位置、または別のより適切な位置などの、適切な位置の周囲に新たな自由形式領域が確立されることが可能である。例示の目的で、新たな自由形式領域３９１が、位置３１１の周囲の自由形式の動き閾値３８０によって確立されているものとして、図３のシステム３００に示される。一実施形態において、自由形式領域３９１を確立するのに利用される自由形式の動き閾値３８０は、前述した、図２に示される自由形式の動き閾値２８０と同一であり得る。別の実施形態において、自由形式の動き閾値３８０は、図２に示される自由形式の動き閾値２８０とは無関係に確立されることが可能であり、自由形式の動き閾値２８０と比べて、より大きいことも、より小さいことも可能である。
【００４３】
[0046]自由形式領域３９１を超えて、溝領域３９３および３９４などのさらなる溝領域が、前段で詳細に説明されるように、それぞれ、境界３８４と境界３８５の間、および境界３８６と境界３８７の間に確立され得る。さらに、前段でやはり詳細に説明されるとおり、溝領域３９３および３９４などの溝領域の外の領域は、自由形式領域３９８などの自由形式領域のままであることが可能である。このため、図３のシステム３００に示されるとおり、ユーザー入力が、線３１５に沿って位置３１１から位置３２１まで進んだ場合、ユーザー入力解釈機構は、少なくとも１つには、そのような入力が自由形式領域３９１内に留まるという事実のため、そのような入力を自由形式入力と解釈することができ、その結果、そのような入力をアプリケーションプログラムまたはオペレーティングシステムに変更なしに送ることができ、すると、アプリケーションプログラムまたはオペレーティングシステムは、アプリケーションプログラムまたはオペレーティングシステムに供給されたユーザー入力、すなわち、変更されていないユーザー入力に従ってグレー表示されたアイコン３２０をレンダリングすることができ、その結果、実際のユーザー入力の位置３２１を中心とするグレー表示されたアイコン３２０をレンダリングする。同様に、ユーザー入力が線３１５に沿って位置３２１から位置３３１まで進むと、ユーザー入力解釈機構は、この場合も、そのような入力が自由形式領域内に、すなわち、自由形式領域３９８内に入っていることが可能であるため、そのような入力を自由形式入力と解釈することが可能である。その結果、ユーザー入力解釈機構は、ユーザー入力を変更なしに送ることができ、このことにより、やはり、グレー表示されたアイコン３３０は、実際のユーザー入力の位置３３１を中心として位置付けられることになり得る。
【００４４】
[0047]しかし、前述の場合と同様に、ユーザー入力が、図３のシステム３００に示されるとおり、ユーザー入力が線３１５に沿って位置３３１から位置３４１まで進む場合のように、溝領域に入る場合、ユーザー入力解釈機構は、ユーザーが正確に直線的に動くのを支援するようにユーザー入力を変更することができる。このため、示されているとおり、ユーザー入力が位置３４１にあり、かつ変更なしに送られた場合、位置３４０にグレー表示されたアイコンをもたらすという事実にもかかわらず、グレー表示されたアイコン３４２は、実際には、溝領域３９３が揃えられたアイコンの元の位置と揃うように上向きにオフセットされた位置に表示される。このため、ユーザー入力解釈機構は、位置３４１で受け取られたユーザー入力を、溝領域３９３の中心に位置付けられた異なる位置に変更していることが可能であり、その結果、そのような入力を受け取っているアプリケーションプログラムまたはオペレーティングシステムは、図示される位置にグレー表示されたアイコン３４２をレンダリングすることになる。
【００４５】
[0048]一実施形態において、前述した自由形式領域および溝領域などの領域に関して、ユーザーの入力の位置を参照することに加えて、またはそうすることの代替として、例えば、溝領域に従ってユーザーの入力を変更すべきかどうかを判定する際に、または代替として、ユーザーの入力が、溝領域をエスケープして、自由形式の動きに戻ることが所望されることを明らかにしているかどうかを判定する際に、ユーザーの入力の履歴が、機構のユーザー入力解釈によって同様に考慮され得る。例えば、そのような実施形態において、線３１５に沿った位置３１１から位置３４１までのユーザー入力が、線３１５によって示されるユーザーの入力の履歴が、ユーザーによる、正確に直線的な形で動く意図を十分に明らかにしていないので、ユーザー入力解釈機構が、溝領域３９３に従って位置３４１におけるユーザー入力を変更することを必ずしももたらしていない可能性がある。代わりに、そのような実施形態において、ユーザーの入力は、ユーザーの入力が、線３１５の終端の矢印によって示されるとおり、線３１５に沿って、溝領域３９３と実質的に平行に、かつ溝領域３９３に沿って続く場合、溝領域３９３に従って変更され得る。同様に、そのような実施形態において、線３１５に沿った位置２７１から位置３１１までのユーザー入力は、単に、ユーザーの入力が溝エスケープ閾値境界３７３を過ぎるという理由だけでなく、線３１５によって示されるユーザーの入力が、溝領域２９２に対して実質的に直角の方向で動くという理由で、溝領域２９２をエスケープすることが所望されることを明らかにし得る。
【００４６】
[0049]図４を参照すると、図示される流れ図４００は、前段で詳細に説明されるユーザー入力解釈機構によって実行され得る例示的な一連のステップを示す。最初、ステップ４１０によって示されるとおり、初期のユーザー入力が受け取られることが可能である。前述したとおり、説明を簡単にし、理解を容易にするため、与えられる説明は、通常のタッチスクリーンデバイスの脈絡で行われており、ユーザーは、例えば、１つまたは複数の指を利用してそのようなデバイスに入力を与えることによって対話することができる。その例示的な脈絡で、ステップ４１０で受け取られる初期のユーザー入力は、例えば、タッチスクリーン上のポイントをユーザーの指が押すことであり得る。その後、ステップ４１５で、ユーザー入力解釈機構が、ユーザーが押している位置が動くにつれ、ユーザー入力の位置を送ることが可能である。前述したとおり、ステップ４１５でユーザー入力を送ることは、ユーザー入力解釈機構が、ステップ４１５に先立って、ユーザーの意図が導き出される何らかの閾値量のユーザー入力を待つ必要がないので、遅延なしに行われ得る。
【００４７】
[0050]ステップ４２０で、ユーザーが入力を行うことを止めたかどうかの判定が行われ得る。この場合も、説明の簡明のために利用されるタッチスクリーンの特定の例の範囲内で、ユーザーが入力を止めることは、例えば、タッチスクリーンデバイス上にユーザーの指によって加えられる圧力の解放の形態をとり得る。ステップ４２０で、そのような解放が検出される場合、ユーザー入力が動いた距離が、アクティブ化閾値未満であったかどうか、または、より正確には、ユーザー入力位置の動きがたどった総距離に加えて、ユーザー入力が始まった位置とユーザー入力が終わった位置の間の差が、アクティブ化閾値未満であったかどうかについてのその後の判定が、ステップ４２５で行われ得る。当業者によって認識されるとおり、いくつかの状況において、ユーザー入力の位置のいくらかの小さい動きが存在し得るものの、ユーザーの意図は、いずれか１つまたは複数のユーザーインターフェース要素を動かすことではなく、ユーザーの意図は、ユビキタスのマウスクリックによって従来、実行されてきたように、それらの要素のうちの１つでアクティブ化を実行することであった。例示的なタッチスクリーンデバイスの脈絡で、そのようなアクティブ化動作は、ユーザーによって、例えば、ユーザーの指を用いて、タッチスクリーンデバイスを押し、その後、圧力を解放して、ユーザーの指を外すことによって実行され得る。ユーザー入力解釈機構は、ステップ４１５などで、ユーザー入力を遅延なしに送ることができるため、ユーザー入力解釈機構は、ユーザーが、実際には、特定の位置でユーザーの指を押下げ、その後、その指を解放して、そのロケーションでアクティブ化イベントを実行することを意図したに過ぎない場合に、ユーザー入力の動きを送る可能性がある。そのような事例において、ステップ４２５で、その量未満のいずれの動きも、動きであることが意図されない可能性が高く、むしろ、ユーザーによるアクティブ化イベントであることが意図される十分に小さい量の動きと定められ得る、アクティブ化閾値に関して判定が行われることが可能である。
【００４８】
[0051]ステップ４２５で、ステップ４１０における押下げイベントからステップ４２０における解放イベントまでにユーザー入力の位置が動いた距離が、アクティブ化閾値未満であったと判定された場合、ユーザー入力解釈機構は、ステップ４３０で、ユーザー入力解釈機構が送った可能性があるそれまでのユーザー入力のいずれの動きをも元に戻すのに十分な量のユーザー入力を生成する。さらに、ステップ４３０で、ユーザー入力解釈機構が、そのユーザーの入力およびアクティブ化イベントを処理することができ、そのアクティブ化イベントをアプリケーションプログラム、オペレーティングシステム、またはコンピューター実行可能命令の他の集合に送ることができる。
【００４９】
[0052]当業者によって認識されるとおり、ステップ４１５などで、ユーザーの入力を遅延なしに送ることによって、説明されるユーザー入力解釈機構は、一実施形態において、ステップ４２５における判定などによって、ユーザーが、動きイベントではなく、アクティブ化イベントを意図していたことが後に明らかとなった場合、いずれのそのような動きをも元に戻す必要があり得る。そのような場合、ステップ４１５で送られたユーザー入力の一部としての、それまでの動きを元に戻すそのようなユーザー入力解釈機構によって生成されるさらなるユーザー入力は、ユーザーインターフェース要素がわずかに動き、その後、ユーザーが実際に意図していたアクティブ化イベントに先立って、そのユーザーインターフェース要素の元の位置に戻ることを視覚的にもたらし得る。一部のユーザーは、アクティブ化イベントが意図されていた場合、そのような動きを邪魔だと感じる可能性があるが、そのような動きは、そのユーザーインターフェース要素が動かせることの視覚的表示を与え得るため、他のユーザーには役立つ可能性がある。しかし、別の実施形態では、供給されたユーザー入力は、元に戻されなくてもよく、ステップ４３０が、ユーザー入力解釈機構がアクティブ化イベントを送ることだけを備えることが可能である。
【００５０】
[0053]ステップ４２５に戻ると、ステップ４２５における判定が、ユーザー入力位置の動きが、アクティブ化閾値の動きを超えたことを明らかにした場合、ユーザー入力解釈機構は、ステップ４２０で検出された解放とともに、ステップ４３５で、ユーザー入力の動きが止まったという指示を送ることができる。オプションとして、ユーザー入力解釈機構は、ユーザー入力によって影響されているグラフィカルユーザーインターフェース要素の慣性をシミュレートするさらなるユーザー入力を生成することができる。例えば、そのような慣性は、ユーザーインターフェース要素の動きを瞬時に止めるのではなく、代わりに、或る距離をかけて止まるまでそのような動きを減速させるさらなるユーザー入力を生成することによってシミュレートされ得る。
【００５１】
[0054]ステップ４２０に戻ると、ステップ４２０で解放が全く検出されなかった場合、処理は、ステップ４４０に進むことが可能であり、その時点で、ユーザーの入力が溝に既に制限されているかどうかの判定が行われ得る。ステップ４４０で判定され得るとおり、ユーザーの入力が溝に既に制限されている場合、処理は、ステップ４５５に進むことが可能であり、その時点で、ユーザーの入力が、溝に対して直角の動き、溝エスケープ閾値を超える動き、またはこれらの動きの組合せを明らかにしているかどうかの判定が行われ得る。ステップ４５５で、ユーザーの入力が、ユーザーが溝を離れようとしていることを明らかにしてはいないと判定された場合、ユーザーの入力は、ステップ４６０で溝に制限され続けることが可能であり、ユーザーの入力は、変更されずに送られることが可能であり、したがって、ユーザーの入力の小さなばらつきが消されることが可能であり、ユーザーの入力は溝に制限されたままであることが可能である。次に、処理は、ステップ４２０に戻ることが可能である。逆に、ステップ４５５で、ユーザーの入力が、ユーザーが溝を離れようとしていることを明らかにしていると判定された場合、処理は、ステップ４６５に進むことが可能であり、その時点で、自由形式の動きが許されることが可能であり、ユーザーの入力は変更されずに送られることが可能である。
【００５２】
[0055]ステップ４４０で、ユーザーの入力が溝に既に制限されてはいないと判定された場合、処理は、ステップ４５５に進むことが可能であり、その時点で、ユーザーの入力が自由形式閾値を超えて動いたかどうかの判定が行われ得る。ステップ４４５で、ユーザーの入力が自由形式閾値を超えて動いてはいないと判定された場合、ユーザーの入力は、ステップ４６５で自由形式の動きが許されることによって示されるとおり、変更されずに送られ続けることが可能である。次に、処理は、ステップ４２０に戻ることが可能である。逆に、例えば、ユーザーの入力が溝領域に近い場合、溝領域に実質的に沿った方向で進んでいる場合、またはこれらの任意の組合せの場合など、ステップ４４５で、ユーザーの入力が自由形式閾値を超えて動いたと判定された場合、ステップ４５０で、ユーザーの入力が明らかにするのが、正確に直線的に動くことが所望されることであるかどうかのさらなる判定が行われることが可能である。ステップ４５０で、ユーザーの入力が、正確に直線的に動くことが所望されることを明らかにしてはいないと判定された場合、ユーザー入力解釈機構は、ユーザーの入力を変更なしに送ることを続けることができ、ステップ４６５で自由形式の動きを許し続けることができ、処理は、ステップ４２０に戻ることが可能である。逆に、ステップ４５０で、ユーザーの入力が明らかにするのが、正確に直線的に動くことが所望されることであると判定された場合、ユーザー入力解釈機構は、ステップ４６０に示されるとおり、ユーザーの入力を溝に制限するようにユーザーの入力を変更することができる。前述の場合と同様に、その後、処理は、ステップ４２０に戻り、その時点で、ユーザーの入力が終わったかどうかの判定が、再び行われ得る。
【００５３】
[0056]企図されるユーザー入力解釈機構の態様をさらに説明するのに、ユーザー入力解釈機構の例示的な状態を示す状態図５００が、図５に示される。最初、図５の状態図５００によって示されるとおり、ユーザー入力解釈機構は、停止状態５１０にあることが可能である。タッチスクリーンが押されるなど、ユーザー入力が開始されると、ユーザー入力解釈機構は、ユーザー入力のそのような開始によってトリガされた移行５１２によって示されるとおり、瞬時自由形式パン状態５２０に移行することが可能である。瞬時自由形式パン状態５２０で、ユーザー入力解釈機構は、ユーザー入力を変更なしに送ることができ、遅延なしにそうすることができる。ユーザー入力解釈機構が瞬時自由形式パン状態５２０にある間、移行５２８の解放イベントによって示されるように、ユーザー入力が終わった場合、ユーザー入力解釈機構は、移行５２８および５８１によって示されるとおり、停止状態５１０に戻るように移行することが可能であり、または移行５２８および５８４によって示されるとおり、アクティブ化状態５４０に移行することが可能である。ユーザー入力解釈機構が、停止状態５１０に戻るように移行するか、またはアクティブ化状態５４０に移行するかの判定は、ユーザー入力がアクティブ化閾値を超えて動いているかどうかの判定５８０を基にすることが可能である。そのようなアクティブ化閾値が超えられた場合、ユーザー入力解釈機構は、移行５８１によって示されるとおり、オプションとして、さらなるユーザー入力が、１つまたは複数のユーザーインターフェース要素の慣性をシミュレートするようにユーザー入力解釈機構によって生成されて、停止状態５１０に戻るように移行することが可能である。逆に、アクティブ化閾値が超えられなかった場合、ユーザー入力解釈機構は、移行５８４によって示されるとおり、アクティブ化状態５４０に移行することが可能である。アクティブ化状態５４０で、ユーザー入力解釈機構は、アクティブ化イベントを送ることができ、オプションとして、ユーザー入力解釈機構が瞬時自由形式パン状態５２０で動作していた間に送られた可能性があるいずれの動きをも元に戻すことができる。その後、移行５４１によって示されるとおり、ユーザー入力解釈機構は、停止状態５１０に戻ることができる。
【００５４】
[0057]瞬時自由形式パン状態５２０にある間、ユーザー入力が動いた場合、移行５２５によって示されるとおり、ユーザー入力解釈機構は、ユーザー入力解釈機構がユーザー入力位置の変化を変更なしに送る瞬時自由形式パン状態５２０に戻ることができ、またはユーザー入力解釈機構は、ユーザー入力解釈機構が、ユーザー入力を送るのに先立って、ユーザー入力を変更する、溝に沿ってパンする状態５３０に移行することが可能であり、変更されたユーザー入力が、溝の中に正確に入り、ユーザーが正確に直線的な動きを実行することを可能にするようにする。ユーザー入力解釈機構が瞬時自由形式パン状態５２０に戻るか、または溝に沿ってパンする状態５３０に移行するかの判定は、判定５５０および５６０を基にすることが可能である。判定５５０で、ユーザーの入力の動きが自由形式閾値の範囲内であったかどうかの判定が行われ得る。判定５５０による判定により、ユーザーの入力が、自由形式閾値の範囲内に留まる場合、ユーザー入力解釈機構は、移行５５２によって示されるとおり、瞬時自由形式パン状態５２０に戻るように移行することができる。逆に、判定５５０が、ユーザーの入力の動きが自由形式閾値を超えることを示す場合、移行５５６によって示されるとおり、さらなる判定５６０が行われ得る。
【００５５】
[0058]判定５６０で、ユーザーの入力の動きが明らかにするのが、正確に直線的に動くことが所望されることであるかどうかの判定が行われ得る。判定５６０で、ユーザーの入力が、正確に直線的に動くことが所望されることを明らかにしてはいないと判定された場合、ユーザー入力解釈機構は、移行５６２に示されるとおり、瞬時自由形式パン状態５２０に戻るように移行することが可能である。しかし、判定５６０で、ユーザーの入力が、正確に直線的に動くことが所望されることを明らかにしていると判定された場合、ユーザー入力解釈機構は、移行５６３によって示されるとおり、溝に沿ってパンする状態５３０に移行することが可能である。
【００５６】
[0059]溝に沿ってパンする状態５３０にある間、ユーザー入力解釈機構が、ユーザー入力が止まったことを検出した場合、ユーザー入力解釈機構は、移行５３１によって示されるとおり、停止状態５１０に戻るように移行することができる。逆に、ユーザー入力解釈機構が、ユーザーの入力のさらなる動きを検出した場合、移行５３７によって示されるとおり、ユーザー入力解釈機構は、瞬時自由形式パン状態５２０に戻るように移行すること、または溝に沿ってパンする状態５３０に戻ることが可能である。機構のユーザー入力解釈がいずれの状態に戻るかは、ユーザー入力が、直角になど、溝エスケープ閾値を超えて動いたかどうかを判定することが可能な判定５７０を基にすることが可能である。判定５７０が、ユーザー入力が溝エスケープ閾値を超えて動いてはいないと判定した場合、ユーザー入力解釈機構は、移行５７２によって示されるとおり、瞬時自由形式パン状態５２０に戻ることができ、ユーザー入力を溝に沿って揃えるようにユーザー入力を変更することを止めることができる。逆に、判定５７０が、ユーザー入力が溝エスケープ閾値を超えていない、または、それ以外で、自由形式で動くことが所望されることを明らかにしてはいないと判定した場合、ユーザー入力解釈機構は、移行５７３によって示されるとおり、溝に沿ってパンする状態５３０に戻ることができ、ユーザー入力を溝と揃えるように変更された、変更されたユーザー入力を送り続けることができる。
【００５７】
[0060]前述の説明から理解され得るとおり、ユーザー入力を解釈することを、そのようなユーザー入力を送る際に遅延を生じさせずに行うための機構が列挙されてきた。本明細書で説明される主題の可能な多くの変形形態に鑑みて、添付の特許請求の範囲、および均等の範囲に含まれ得る、すべてのそのような実施形態を本発明として主張する。
【図１】
0005909240.tif 000002
【図２】
0005909240.tif 000003
【図３】
0005909240.tif 000004
【図４】
0005909240.tif 000005
【図５】
0005909240.tif 000006