(57)【特許請求の範囲】
【請求項１】
複数のビューを有するビュー階層を含むソフトウェアを実行するように構成された電子デバイスにおける方法であって、
前記ビュー階層の１つ以上のビューを表示するステップと、
１つ以上のイベント認識部を含む特定のビューにそれぞれ関連付けられたソフトウェア要素の１つ以上を実行するステップと、
ここで、イベント認識部それぞれは、
１つ以上のサブイベントに基づくイベント定義と、
対象に対する動作を規定し、且つ、前記イベント認識部が前記イベント認識定義に対応するイベントを検出するのに応答して前記動作を前記対象に送出するように構成されるイベントハンドラとを有する；
１つ以上のサブイベントのシーケンスを検出するステップと、
前記ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとして前記ビュー階層の前記ビューのうちの１つを識別するステップと、
前記ビュー階層内の能動的に関与した複数のビューのイベント認識部に、それぞれのサブイベントを配信するステップと、
前記ビュー階層で能動的に関与した複数のビューに対する各イベント認識部にて、前記サブイベントのシーケンスの次のサブイベントを処理する前に、前記能動的に関与した複数のビューに対応する各イベント認識部にて、前記それぞれのサブイベントを同時に処理するステップと
を有することを特徴とする方法。
【請求項２】
前記ビュー階層で能動的に関与した複数のビューに対する各イベント認識部は、前記１つ以上のサブイベントのシーケンスを同時に処理することを特徴とする請求項１に記載の方法。
【請求項３】
前記ビュー階層内の第１の能動的に関与したビューは、前記第１の能動的に関与したビューと関連付けられた１つ以上のイベント認識部への前記それぞれのサブイベントの配信を防止するように構成されることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記ビュー階層内の第１の能動的に関与したビューは、前記第１の能動的に関与したビューが前記ヒットビューでない限り、前記第１の能動的に関与したビューと関連付けられた１つ以上のイベント認識部への前記それぞれのサブイベントの配信を防止するように構成されることを特徴とする請求項１または２に記載の方法。
【請求項５】
前記ビュー階層内の第２の能動的に関与したビューは、前記第２の能動的に関与したビューと関連付けられた１つ以上のイベント認識部及び前記第２の能動的に関与したビューの祖先と関連付けられた１つ以上のイベント認識部への前記それぞれのサブイベントの配信を防止するように構成されることを特徴とする請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記特定のビューについて、前記１つ以上のイベント認識部のうちの少なくとも１つは、ジェスチャ定義及びジェスチャハンドラを有するジェスチャ認識部であることを特徴とする請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチセンシティブ表面を更に備えることを特徴とする請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記１つ以上のサブイベントのシーケンスは基本のタッチイベントを含むことを特徴とする請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
各イベント認識部は、少なくともイベント可能状態、イベント不可能状態及びイベント認識済状態を含むイベント認識状態の集合を有することを特徴とする請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
それぞれのイベント認識部は、対応するイベント認識部がイベント可能状態になる場合に、前記対象に配信するための対応する動作の準備を開始することを特徴とする請求項９に記載の方法。
【請求項１１】
前記それぞれのイベント認識部は、前記対応するイベント認識部が認識済状態になる場合に前記対象に配信するための対応する動作の準備を完了することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記能動的に関与した複数のビューについて、前記イベント認識部は、前記１つ以上のサブイベントのシーケンスを並列に個別に処理することを特徴とする請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
前記１つ以上のイベント認識部のうちの少なくとも１つは、前記イベントが認識されるまで前記サブイベントのシーケンスの１つ以上のサブイベントを配信するのを遅延させるように構成されることを特徴とする請求項１乃至１２のいずれか１項に記載の方法。
【請求項１４】
前記複数の能動的に関与した複数のビューのイベント認識部のサブセットを有する、１つ以上の排他的なイベント認識部は、排他的イベント認識を実行するように構成され、
前記方法は、
前記１つ以上の排他的なイベント認識部がイベントを認識したとき、前記ビュー階層で能動的に関与したビューに対するあらゆる非排他的イベント認識部が、サブイベントに前記シーケンスに後続するサブイベントを受信するのを防止するステップを更に有することを特徴とする請求項１乃至１３のいずれか１項に記載の方法。
【請求項１５】
前記１つ以上の排他的イベント認識部はイベント例外リストを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記イベント定義は、ユーザの入力動作を定義することを特徴とする請求項１乃至１５のいずれか１項に記載の方法。
【請求項１７】
コンピュータシステム又はコンピュータデバイスの１つ以上のプロセッサにより実行される１つ以上のプログラムを格納するコンピュータ可読記憶媒体であって、前記１つ以上のプログラムは、
複数のビューを有するビュー階層の１つ以上のビューを表示する１つ以上のアプリケーションプログラムと、
ここで、前記１つ以上のアプリケーションプログラムは、１つ以上のソフトウェア要素を有し、
ここで、各ソフトウェア要素は、１つ以上のイベント認識部を含む特定のビューと関連付けられており、
ここで、各イベント認識部は、
１つ以上のサブイベントに基づくイベント定義と、
対象に対する動作を規定し、且つ、前記イベント認識部が前記イベント認識定義に対応するイベントを検出するのに応答して前記動作を前記対象に送出するように構成されるイベントハンドラとを有する；
イベント管理命令であって、前記コンピュータシステム又は前記コンピュータデバイスの前記１つ以上のプロセッサにより実行される場合に、前記コンピュータシステム又は前記コンピュータデバイスに、
１つ以上のサブイベントのシーケンスを検出させ、
前記ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとして前記ビュー階層の前記ビューのうちの１つを識別させ、
前記ビュー階層内の複数の能動的に関与したビューについて、それぞれのサブイベントをイベント認識部に配信させ、
前記ビュー階層で前記複数の能動的に関与したビューに対するイベント認識部にて、前記サブイベントのシーケンスの次のサブイベントを処理する前に、前記能動的に関与した複数のビューに対応する各イベント認識部にて、前記それぞれのサブイベントを同時に処理させるイベント管理命令と
を有することを特徴とするコンピュータ可読記憶媒体。
【請求項１８】
前記ビュー階層で前記複数の能動的に関与したビューに対する各イベント認識部は、前記１つ以上のサブイベントのシーケンスを同時に処理することを特徴とする請求項１７に記載のコンピュータ可読記憶媒体。
【請求項１９】
装置であって、
ディスプレイと、
１つ以上のプロセッサと、
複数のビューを有するビュー階層の１つ以上のビューを表示するための１つ以上のプログラムを格納するメモリとを有し、
ここで、前記１つ以上のプログラムは、１つ以上のイベント認識部を含むビューにそれぞれ関連付けられたソフトウェア要素を１つ以上を含み、
ここで、イベント認識部それぞれは、
１つ以上のサブイベントに基づくイベント定義と、
対象に対する動作を規定し、且つ、前記イベント認識部が前記イベント認識定義に対応するイベントを検出するのに応答して前記動作を前記対象に送出するように構成されるイベントハンドラとを有する；
前記１つ以上のプログラムはイベント配信プログラムを含み、当該イベント配信プログラムは前記装置の前記１つ以上のプロセッサに実行されたとき、前記装置に、
１つ以上のサブイベントのシーケンスを検出させ、
前記ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとして前記ビュー階層の前記ビューのうちの１つを識別させ、
前記ビュー階層内の複数の能動的に関与したビューにに対するイベント認識部にサブイベントを配信させ、
前記ビュー階層内の前記複数の能動的に関与したビューに対するイベント認識部にて、前記サブイベントのシーケンスの次のサブイベントを実行する前に、前記能動的に関与した複数のビューに対応する各イベント認識部にて、前記それぞれのサブイベントを同時に処理させる
ことを特徴とする装置。
【請求項２０】
前記ビュー階層で前記複数の能動的に関与したビューに対する各イベント認識部は、前記１つ以上のサブイベントのシーケンスを同時に処理することを特徴とする請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にユーザインタフェース処理に関する。本発明は、特に、ユーザインタフェースイベントを認識する装置及び方法に関する。
【背景技術】
【０００２】
一般に演算装置（computing device)は、演算装置と対話するために使用されるユーザインタフェースを含む。ユーザインタフェースは、ユーザインタフェースの種々の態様と対話するキーボード、マウス、並びにタッチセンシティブ表面等のディスプレイ及び／又は入力デバイスを含んでもよい。入力デバイスとしてタッチセンシティブ表面を備える幾つかのデバイスにおいて、タッチに基づくジェスチャの第１の集合（例えば、タップ、ダブルタップ、横スワイプ、縦スワイプ、ピンチ、非ピンチ、２本指スワイプのうちの２つ以上）は、特定の状況（例えば、第１のアプリケーションの特定のモード）で適切な入力として認識され、タッチに基づくジェスチャの他の異なる集合は、他の状況（例えば、第１のアプリケーション内の異なるアプリケーション及び／あるいは異なるモード又は状況）で適切な入力として認識される。その結果、タッチに基づくジェスチャを認識し且つそれに応答するのに必要なソフトウェア及び論理は、複雑になり、アプリケーションが更新される度に又は新しいアプリケーションが演算装置に追加される度に改訂が必要となる。これらの同様の問題は、タッチに基づくジェスチャ以外の入力源を利用するユーザインタフェースにおいて生じる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、タッチに基づくジェスチャ及びイベント、並びに他の入力源からのジェスチャ及びイベントを認識する総合的な枠組み又は機構を有するのが望ましい。総合的な枠組み又は機構は、演算装置上の全てのアプリケーションプログラムのほぼ全ての状況又はモードに容易に適応可能であり、アプリケーションが更新される場合、あるいは新しいアプリケーションが演算装置に追加される場合でも殆ど又は全く改訂を必要としない。
【課題を解決するための手段】
【０００４】
上述の欠点に対処するために、いくつかの実施形態は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成された電子デバイスにおいて、ビュー階層の１つ以上のビューを表示し、各々が１つ以上のイベント認識部を含む特定のビューと各々が関連付けられる１つ以上のソフトウェア要素を実行する方法を提供する。各イベント認識部は、１つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。更に方法は、１つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの１つを識別する。方法は、ビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に更に配信し、ビュー階層で能動的に関与したビューに対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【０００５】
いくつかの実施形態は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成された電子デバイスにおいて、ビュー階層の１つ以上のビューを表示し、各々が１つ以上のイベント認識部を含む特定のビューと各々が関連付けられる１つ以上のソフトウェア要素を実行する方法を提供する。各イベント認識部は、１つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。更に方法は、１つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの１つを識別する。更に方法は、ビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信し、ビュー階層で能動的に関与したビューに対するイベント認識部において、それぞれのサブイベントを処理しつつサブイベント認識を判断する。
【０００６】
いくつかの実施形態は、コンピュータシステム又はコンピュータデバイスの１つ以上のプロセッサにより実行される複数のビューを有するビュー階層の１つ以上のビューを表示する１つ以上のアプリケーションプログラムを含む１つ以上のプログラムを格納するコンピュータ可読記憶媒体を提供する。１つ以上のアプリケーションプログラムは、各々が１つ以上のイベント認識部を含む特定のビューと各々が関連付けられる１つ以上のソフトウェア要素含む。各イベント認識部は、１つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有し、イベント管理命令は、コンピュータシステム又はコンピュータデバイスの１つ以上のプロセッサにより実行される場合にコンピュータシステム又はコンピュータデバイスが、１つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの１つを識別し、且つビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信するようにし、ビュー階層で能動的に関与したビューに対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【０００７】
いくつかの実施形態は、ディスプレイと、１つ以上のプロセッサと、メモリと、複数のビューを有するビュー階層の１つ以上のビューを表示するように構成されるメモリに格納された１つ以上のプログラムとを備える装置を提供する。１つ以上のプログラムは、各々が１つ以上のイベント認識部を含む特定のビューと各々が関連付けられる１つ以上のソフトウェア要素含む。イベント認識部は、１つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。装置のプログラムは、装置の１つ以上のプロセッサにより実行される場合に装置が１つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの１つを識別し、且つビュー階層内の能動的に関与したビューに対するイベント認識部がそれぞれのサブイベントを処理する間にサブイベント認識を判断させるイベント配信プログラムを更に含む。
【０００８】
いくつかの実施形態において、１つ以上のプロセッサと、メモリと、複数のプログラム層を有するプログラム階層の１つ以上のプログラム層の実行を管理するように構成されるメモリに格納された１つ以上のプログラムとを備える装置が提供される。１つ以上のプログラムは、各々が１つ以上のイベント認識部を含む特定のプログラム層と各々が関連付けられる１つ以上のソフトウェア要素含む。イベント認識部は、１つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。装置は、装置の１つ以上のプロセッサにより実行される場合に装置が１つ以上のサブイベントのシーケンスを検出し、プログラム階層のどのプログラム層が能動的に関与したプログラム層であるかを明らかにするヒット層としてプログラム階層のプログラム層のうちの１つを識別し、且つプログラム階層内の能動的に関与したプログラム層毎にそれぞれのサブイベントをイベント認識部に配信させるイベント配信プログラムを更に含み、プログラム階層で能動的に関与したプログラム層に対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【図面の簡単な説明】
【０００９】
【図１Ａ】、
【図１Ｂ】図１Ａ及び図１Ｂは、いくつかの実施形態に係る電子デバイスを示すブロック図である。
【図２】図２は、いくつかの実施形態に係る例示的な電子デバイスの入出力処理スタックを示す図である。
【図３Ａ】図３Ａは、いくつかの実施形態に係る例示的なビュー階層を示す図である。
【図３Ｂ】、
【図３Ｃ】図３Ｂ及び図３Ｃは、いくつかの実施形態に係る例示的なイベント認識部の方法及びデータ構造を示すブロック図である。
【図４Ａ】、
【図４Ｂ】図４Ａ及び図４Ｂは、いくつかの実施形態に係る例示的な状態遷移マシンを示すフローチャートである。
【図４Ｃ】図４Ｃは、いくつかの実施形態に係る例示的なサブイベントの集合に対する図４Ａ及び図４Ｂの例示的な状態遷移マシンを示す図である。
【図５Ａ】、
【図５Ｂ】、
【図５Ｃ】図５Ａ〜図５Ｃは、いくつかの実施形態に係る例示的なイベント認識部状態遷移マシンを含む例示的なイベントシーケンスを示す図である。
【図６Ａ】、
【図６Ｂ】図６Ａ及び図６Ｂは、いくつかの実施形態に係るイベント認識方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
図中、同一の図中符号は対応する部分を示す。
【００１１】
次に、添付の図面で例が示される実施形態を詳細に参照する。以下の詳細な説明において、本発明を完璧に理解するために多くの特定の詳細を説明する。しかし、本発明がこれらの特定の詳細を用いずに実施されてもよいことは、当業者には明らかとなるだろう。他の例において、既知の方法、手順（プロシージャ）、構成要素、回路及びネットワークは、実施形態の態様を不必要に不明瞭にしないように詳細に説明されていない。
【００１２】
第１及び第２等の用語が種々の要素を説明するために本明細書で使用されてもよいが、これらの要素がこれらの用語により限定されるべきではないことは、更に理解されるだろう。これらの用語は、ある要素を別の要素と区別するためだけに使用される。例えば、本発明の範囲から逸脱せずに、第１の接触は第２の接触と呼ばれてもよく、同様に第２の接触は第１の接触と呼ばれてもよい。第１の接触及び第２の接触は、共に接触であるが同一の接触ではない。
【００１３】
本明細書の本発明の説明で使用される専門用語は、特定の実施形態を説明するためだけのものであり、本発明を限定することを意図しない。本発明及び添付の請求の範囲の説明で使用されるように、特に指示のない限り、単数形は複数形も含むことを意図する。本明細書で使用されるような「及び／又は」という用語は、関連付けられ且つ列挙された項目のうちの１つ以上のいずれか又は全ての組合せを示し且つ含むことが更に理解されるだろう。本明細書で使用される場合の用語「備える」は、記載される特徴、数字、ステップ、動作、要素及び／又は構成要素の存在を特定するが、１つ以上の他の特徴、数字、ステップ、動作、要素、構成要素及び／又はそれらの集合の存在又は追加を除外しないことが更に理解されるだろう。
【００１４】
本明細書で使用されるように、「場合」という用語は、状況に依存して「際」、「すると」、「判定することに応答して」又は「検出することに応答して」を意味するものとして解釈されてもよい。同様に、「それが判定される場合」又は「［示された条件又はイベント］が検出される場合」という表現は、状況に依存して「判定すると」、「判定することに応答して」、「（示された条件又はイベント）を検出すると」又は「（示された条件又はイベント）を検出することに応答して」を意味するものとして解釈されてもよい。
【００１５】
上述したように、入力デバイスとしてタッチセンシティブ表面を備えるいくつかのデバイスにおいて、タッチに基づくジェスチャの第１の集合（例えば、タップ、ダブルタップ、横スワイプ、縦スワイプのうちの２つ以上）は、特定の状況（例えば、第１のアプリケーションの特定のモード）で適切な入力として認識され、タッチに基づくジェスチャの他の異なる集合は、他の状況（例えば、第１のアプリケーション内の異なるアプリケーション及び／あるいは異なるモード又は状況）で適切な入力として認識される。その結果、タッチに基づくジェスチャを認識し且つそれに応答するのに必要なソフトウェア及び論理は、複雑になり、アプリケーションが更新される度に又は新しいアプリケーションが演算装置に追加される度に改訂が必要となる。
【００１６】
以下に説明する実施形態において、タッチに基づくジェスチャはイベントである。事前定義されたイベント、例えばアプリケーションの現在の状況での適切な入力に応答するイベントを認識すると、イベントに関する情報はアプリケーションに配信される。本明細書の説明において、全てのタッチに基づくジェスチャはイベントに対応する。また、各イベントはサブイベントのシーケンスとして定義される。マルチタッチ表示装置（本明細書では「画面」と呼ばれることが多い）又は他のマルチタッチセンシティブ表面を有し、且つマルチタッチに基づくジェスチャを受け入れるデバイスにおいて、マルチタッチに基づくイベントを定義するサブイベントは、マルチタッチサブイベント（２本以上の指がデバイスのタッチセンシティブ表面に同時に接触することを必要とする）を含んでもよい。例えば、マルチタッチセンシティブディスプレイを有するデバイスにおいて、サブイベントのマルチタッチシーケンスの各々は、ユーザの指が最初に画面に触れる際に開始してもよい。１つ以上の更なる指が後続して又は同時に画面に触れる際に更なるサブイベントが発生してもよく、画面に触れている全ての指が画面にわたり移動する際に更に他のサブイベントが発生してもよい。ユーザの指が最後に画面から離れた時にシーケンスは終了する。
【００１７】
タッチセンシティブ表面を有するデバイスにおいて実行するアプリケーションを制御するためにタッチに基づくジェスチャを使用する場合、タッチは時間的側面及び空間的側面の双方を有する。段階と呼ばれる時間的側面には、タッチがちょうど開始した時、タッチが移動しているかあるいは静止しているか及びタッチが終了する時、すなわち指が画面から離れる時がある。タッチの空間的側面は、タッチが発生するビューの集合（set）又はユーザインタフェースウィンドウの集合である。タッチが検出されるビュー又はウィンドウは、プログラム階層又はビュー階層内のプログラムレベルに対応してもよい。例えば、タッチが検出される最低レベルのビューはヒットビューと呼ばれてもよく、適切な入力として認識されるイベントの集合は、タッチに基づくジェスチャを開始する初期タッチのヒットビューに少なくとも部分的に基づいて判定されてもよい。
【００１８】
図１Ａ及び図１Ｂは、いくつかの実施形態に係る電子デバイス１０２及び１０４を示すブロック図である。電子デバイス１０２及び１０４は、デスクトップコンピュータシステム、ラップトップコンピュータシステム、移動電話、スマートフォン、パーソナルデジタルアシスタント又はナビゲーションシステムを含むがそれに限定されないあらゆる電子デバイスであってもよい。更に電子デバイスは、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイ（例えば、図１Ｂのディスプレイ１５６）を備えたポータブル電子デバイス、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイを備えたコンピュータ、タッチセンシティブ表面を備えたコンピュータ及びユーザインタフェースを示すように構成されたディスプレイ、あるいはコンシューマ電子デバイス、移動電話、テレビゲームシステム、電子音楽プレーヤ、タブレットＰＣ、電子書籍読取りシステム、電子書籍、ＰＤＡ、電子手帳、電子メールデバイス、ラップトップコンピュータ又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート家電等を含むがそれらに限定されない他のあらゆる形態の演算装置であってもよい。電子デバイス１０２及び１０４は、それぞれ、ユーザインタフェース１１３−Ａ及び１１３−Ｂを含んでもよい。
【００１９】
いくつかの実施形態において、電子デバイス１０２及び１０４はタッチスクリーンディスプレイを含む。これらの実施形態において、ユーザインタフェース１１３（すなわち、１１３−Ａ又は１１３−Ｂ）は、電子デバイス１０２及び１０４と対話するためにユーザにより使用されるオンスクリーンキーボード（不図示）を含んでもよい。あるいは、キーボードは、電子デバイス１０２及び１０４から独立し且つそれらとは別個であってもよい。例えばキーボードは、電子デバイス１０２又は１０４に結合された有線又は無線のキーボードであってもよい。
【００２０】
いくつかの実施形態において、電子デバイス１０２は、電子デバイス１０２に結合されるディスプレイ１２６及び１つ以上の入力デバイス１２８−Ａ（例えば、キーボード、マウス、トラックボール、マイク、物理ボタン、タッチパッド等）を含む。これらの実施形態において、入力デバイス１２８−Ａのうちの１つ以上は、オプションとして電子デバイス１０２から独立し且つそれとは別個であってもよい。例えば１つ以上の入力デバイスは、キーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの１つ以上を含んでもよく、それらのうちのいずれかは、オプションとして電子デバイスから独立してもよい。オプションとして、デバイス１０２又は１０４は、１つ以上のセンサ１３０、例えば１つ以上の加速度計、ジャイロスコープ、ＧＰＳシステム、スピーカ、赤外線（ＩＲ）センサ、生体情報認識センサ、カメラ等を含んでもよい。尚、入力デバイス１２８又はセンサ１３０等の種々の例示的なデバイスの上記の説明は、本明細書で説明する実施形態の動作に対して全く重要ではなく、入力デバイスとして本明細書で説明されるあらゆる入力デバイス又はセンサ装置は、センサとしても適切に説明されてもよく、逆も同様である。いくつかの実施形態において、１つ以上のセンサ１３０により生成された信号は、イベントを検出するために入力源として使用される。
【００２１】
いくつかの実施形態において、電子デバイス１０４は、電子デバイス１０４に結合されるタッチセンシティブディスプレイ１５６（すなわち、タッチセンシティブ表面を有するディスプレイ）及び１つ以上の入力デバイス１２８−Ｂを含む。いくつかの実施形態において、タッチセンシティブディスプレイ１５６は、２つ以上の別個の同時の（又は部分的に同時の）タッチを検出する機能を有し、これらの実施形態において、ディスプレイ１５６は、本明細書でマルチタッチディスプレイ又はマルチタッチセンシティブディスプレイと呼ばれることもある。
【００２２】
本明細書で説明される電子デバイス１０２又は１０４のいくつかの実施形態において、入力デバイス１２８は電子デバイス１０２又は１０４に配設される。他の実施形態において、入力デバイス１２８のうちの１つ以上は、電子デバイス１０２又は１０４から独立し且つそれとは別個である。例えば、入力デバイス１２８のうちの１つ以上は、ケーブル（例えば、ＵＳＢケーブル）、あるいは無線接続（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）接続）により電子デバイス１０２又は１０４に結合されてもよい。
【００２３】
それぞれ、入力デバイス１２８を使用する場合、あるいは電子デバイス１０２又は１０４のタッチセンシティブディスプレイ１５６上でタッチに基づくジェスチャを実行する場合、ユーザは、電子デバイス１０２又は１０４の１つ以上のＣＰＵ１１０により処理されるサブイベントのシーケンスを生成する。いくつかの実施形態において、電子デバイス１０２又は１０４の１つ以上のＣＰＵ１１０は、イベントを認識するようにサブイベントのシーケンスを処理する。
【００２４】
一般に電子デバイス１０２又は１０４は、それぞれ、１つ以上のシングルコア処理ユニット又はマルチコア処理ユニット（１つ又は複数の「ＣＰＵ」）１１０及び１つ以上のネットワーク、あるいは他の通信インタフェース１１２を含む。電子デバイス１０２又は１０４は、それぞれ、メモリ１１１及びこれらの構成要素を相互接続する１つ以上の通信バス１１５を含む。通信バス１１５は、システム構成要素（本明細書では不図示）間の通信を相互接続し且つ制御する回路網（チップセットと呼ばれることもある）を含んでもよい。簡単に上述したように、電子デバイス１０２及び１０４は、それぞれ、ディスプレイ１２６及びマルチタッチディスプレイ１５６を含むユーザインタフェース１１３をオプションとして含む。また、一般に電子デバイス１０２及び１０４は、入力デバイス１２８（例えば、キーボード、マウス、タッチスクリーン、タッチセンシティブ表面、マルチタッチスクリーン、キーパッド等）を含む。いくつかの実施形態において、入力デバイスは、オンスクリーン入力デバイス（例えば、表示装置のタッチセンシティブ表面）を含む。メモリ１１１は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ又は他のランダムアクセス固体メモリ素子等の高速ランダムアクセスメモリを含んでもよく、１つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ素子又は他の不揮発性固体記憶装置等の不揮発性メモリを含んでもよい。メモリ１１１は、オプションとしてＣＰＵ１１０からリモートで配置された１つ以上の記憶装置を含んでもよい。メモリ１１１又はメモリ１１１内の不揮発性メモリ素子は、コンピュータ可読記憶媒体を含む。いくつかの実施形態において、メモリ１１１は、以下のプログラム、モジュール及びデータ構造又はそれらの部分集合を格納する：
・種々の基本システムサービスを処理し且つハードウェア依存タスクを実行する手順を含むオペレーティングシステム１１８；
・電子デバイス１０２又は１０４を、それぞれ、１つ以上のそれぞれの通信インタフェース１１２（有線又は無線）、並びに１つ以上の通信ネットワーク、例えばインターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等を介して他のデバイスに接続するために使用される通信モジュール１２０（電子デバイス１０２及び１０４のそれぞれにおける）；
・オペレーティングシステム１１８内の種々の別の実施形態において又はアプリケーションソフトウェア１２４で実現されてもよいイベント配信システム１２２（電子デバイス１０２及び１０４のそれぞれにおける）；しかし、いくつかの実施形態において、イベント配信システム１２２のいくつかの態様はオペレーティングシステム１１８において実現されてもよく、他の態様はアプリケーションソフトウェア１２４で実現される。
・それぞれ、アプリケーションソフトウェア１２４の１つ以上のアプリケーション（例えば、電子メールアプリケーション、ウェブブラウザアプリケーション、テキストメッセージングアプリケーション等）。
【００２５】
上記の識別された要素の各々は、上述のメモリ素子のうちの１つ以上に格納されてもよく、本明細書で説明する機能を実行する命令の集合に対応する。命令の集合は、１つ以上のプロセッサ（例えば、１つ以上のＣＰＵ１１０）により実行される。先に識別されたモジュール又はプログラム（すなわち、命令の集合）が別個のソフトウェアプログラム、手順又はモジュールとして実現される必要はないため、これらのモジュールの種々の部分集合は、種々の実施形態において組み合わされてもよくあるいは再配置されてもよい。いくつかの実施形態において、メモリ１１１は、先に識別されたモジュール及びデータ構造の部分集合を格納してもよい。更にメモリ１１１は、上述されていない更なるモジュール及びデータ構造を格納してもよい。
【００２６】
図２は、本発明のいくつかの実施形態に係る例示的な電子デバイス又は電子装置（例えば、デバイス１０２又は１０４）の入出力処理スタック２００を示す図である。デバイスのハードウェア（例えば、電子回路網）２１２は、入出力処理スタック２００のベースレベルにある。ハードウェア２１２は、図１Ａ及び／又は図１ｂに示された構成要素等の種々のハードウェアインタフェース構成要素を含む。ハードウェア２１２は、上述のセンサ１３０のうちの１つ以上を更に含む。入出力処理スタック２００の他の全ての要素（２０２〜２１０）は、ハードウェア２１２から受信した入力を処理し且つハードウェアユーザインタフェース（例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータ）を介して示される種々の出力を生成するソフトウェア手順又はソフトウェア手順の一部である。
【００２７】
ドライバ、又はドライバ２１０の集合は、ハードウェア２１２と通信する。ドライバ２１０は、ハードウェア２１２から入力データを受信し、受信した入力データを処理する。コアオペレーティングシステム（「ＯＳ」）２０８はドライバ２１０と通信する。コアＯＳ２０８は、ドライバ２１０から受信した生の入力データを処理する。いくつかの実施形態において、ドライバ２１０はコアＯＳ２０８の一部であると考えられてもよい。
【００２８】
ＯＳアプリケーションプログラミングインタフェース（「ＯＳ  ＡＰＩ）」２０６の集合は、コアＯＳ２０８と通信するソフトウェアプロシージャである。いくつかの実施形態において、ＡＰＩ２０６は、デバイスのオペレーティングシステムに含まれるが、コアＯＳ２０８の上のレベルにある。ＡＰＩ２０６は、本明細書で説明する電子デバイス又は電子装置上で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース（ＵＩ）ＡＰＩ２０４はＯＳ  ＡＰＩ２０６を利用する。デバイス上で実行するアプリケーションソフトウェア（「アプリケーション」）２０２は、ユーザと通信するためにＵＩ  ＡＰＩ２０４を利用する。その結果、ＵＩ  ＡＰＩ２０４は、より低いレベルの要素と通信し、マルチタッチディスプレイ１５６等の種々のユーザインタフェースハードウェアと最終的に通信する。
【００２９】
入出力処理スタック２００の各層は、必ずしも必要とされない入出力処理スタック２００の下の層を利用する。例えば、いくつかの実施形態において、アプリケーション２０２はＯＳ  ＡＰＩ２０６と通信することもある。一般にＯＳ  ＡＰＩ層２０６以上の層は、専用であると考えられるため、コアＯＳ２０８、ドライバ２１０又はハードウェア２１２に直接アクセスしなくてもよい。アプリケーション層２０２及びＵＩ  ＡＰＩ２０４は、通常、ＯＳ  ＡＰＩ２０６に対して直接呼び出すことにより、コアＯＳ２０８、ドライバ２１０及びハードウェア２１２の層にアクセスする。
【００３０】
別の方法で示すと、電子デバイス１０２又は１０４の１つ以上のハードウェア要素２１２、並びにドライバ２１０（図２に示された）、コアＯＳ（オペレーティングシステム）２０８（図２に示された）、オペレーティングシステムＡＰＩソフトウェア２０６（図２に示された）及びアプリケーション・ユーザインタフェースＡＰＩソフトウェア２０４（図２に示された）等のデバイス上で実行するソフトウェアは、入力デバイス１２８のうちの１つ以上及び／又はタッチセンシティブディスプレイ１５６で入力イベント（ジェスチャのサブイベントに対応してもよい）を検出し、入力イベントがアプリケーション２０２に配信されるインベントに対応するか及びいつ対応するかを判定するために現在アクティブイベント認識部の集合により使用された種々のデータ構造（デバイス１０２又は１０４のメモリに格納された）を生成又は更新する。イベント認識の技法、装置及びコンピュータプログラムを以下に更に詳細に説明する。
【００３１】
図３Ａは、本例では最も外側のビュー３０２に表示された探索プログラムである例示的なビュー階層３００を示す。最も外側のビュー３０２は、一般に、ユーザが直接対話するユーザインタフェース全体を含み、例えば以下のような従属ビュー（subordinate view）を含む。
・探索結果をグループ化し且つ縦方向にスクロールされる探索結果パネル３０４
・文字入力を受け入れる探索フィールド３０６
・迅速にアクセスするためにアプリケーションをグループ化するホームキー列３１０
【００３２】
本例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層３００におけるビューレベルの数は、階層の種々の分岐で異なってもよく、１つ以上の従属ビューは下位レベルの従属ビューを有し、１つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。引き続き図３Ａに示された例を参照すると、探索結果パネル３０４は、探索結果毎に別個の従属ビュー３０５（パネル３０４に従属する）を含む。本明細書において、この例は、地図ビュー３０５と呼ばれた従属ビューにおいて１つの探索結果を示す。探索フィールド３０６は、本明細書でクリアコンテンツアイコンビュー３０７と呼ばれる従属ビューを含む。クリアコンテンツアイコンビュー３０７は、ユーザがビューのクリアコンテンツアイコン３０７上で特定の動作（例えば、シングルタッチジェスチャ又はシングルタップジェスチャ）を実行する場合に探索フィールドのコンテンツをクリアする。ホームキー列３１０は、それぞれ、連絡先アプリケーション、電子メールアプリケーション、ウェブブラウザ及びｉＰｏｄミュージックインタフェースに対応する従属ビュー３１０−１、３１０−２、３１０−３及び３１０−４を含む。
【００３３】
タッチサブイベント３０１−１は最も外側のビュー３０２に示される。探索結果パネル３０４及び地図ビュー３０５の双方の上にタッチサブイベント３０１−１の場所が与えられたとすると、タッチサブイベントは、それぞれ、３０１−２及び３０１−３としてこれらのビュー上に更に示される。タッチサブイベントの能動的に関与したビューは、ビュー探索結果パネル３０４、地図ビュー３０５及び最も外側のビュー３０２を含む。図３Ｂ及び図３Ｃを参照して、サブイベント配信及び能動的に関与したビューに関する更なる情報を以下に提供する。
【００３４】
ビュー（及び対応するプログラムレベル）はネストされる。換言すると、ビューは他のビューを含むことができる。その結果、第１のビューと関連付けられたソフトウェア要素（例えば、イベント認識部）は、第１のビュー内のビューと関連付けられた１つ以上のソフトウェア要素を含むか、あるいはそれにリンクされる。アプリケーションと関連付けられるビューもあれば、高レベルのＯＳ要素、例えばグラフィカルユーザインタフェース、ウィンドウマネージャ等と関連付けられるビューもある。
【００３５】
後続の説明を簡略化するために、一般にビュー及びビュー階層のみを参照するが、いくつかの実施形態において、方法は、複数のプログラム層を有するプログラム階層及び／又はビュー階層で動作してもよいことが理解されるべきである。
【００３６】
図３Ｂ及び図３Ｃは、イベント認識部に関連した例示的な方法及び構造を示す。図３Ｂは、イベントハンドラがビューの階層内の特定のビューと関連付けられる場合のイベント処理の方法及びデータ構造を示す。図３Ｃは、イベントハンドラがプログラムレベルの階層内の特定のレベルと関連付けられる場合のイベント処理の方法及びデータ構造を示す。イベント認識部の包括的方法３１２及び３５０は、それぞれ、ヒットビュー判定モジュール３１４及びヒットレベル判定モジュール３５２、アクティブイベント認識部判定モジュール３１６及び３５４、並びにサブイベント配信モジュール３１８及び３５６を含む。
【００３７】
ヒットビュー判定モジュール３１４及びヒットレベル判定モジュール３５２は、それぞれ、１つ以上のビュー、例えば３つの主な分岐を有する図３Ａに示された例示的なビュー階層３００内でサブイベントが発生した場所を判定するソフトウェアプロシージャを提供する。
【００３８】
図３Ｂのヒットビュー判定モジュール３１４は、最も外側のビュー３０２、探索結果（地図ビュー３０５）及び探索結果パネルビュー３０４上に３０１−１として示されたユーザタッチ等のサブイベントに関連した情報を受信する。ヒットビュー判定モジュール３１４は、サブイベントを処理すべき階層における最低ビューとしてヒットビューを識別する。殆どの状況において、ヒットビューは、初期サブイベント（すなわち、イベント又は潜在的なイベントを形成するサブイベントのシーケンスの第１のサブイベント）が発生する最低レベルのビューである。ヒットビューは、識別されると、ヒットビューが識別された同一のタッチ又は入力源に関連した全てのサブイベントを受信する。
【００３９】
いくつかの実施形態において、図３Ｃのヒットレベル判定モジュール３５２は、類似の処理を利用してもよい。
【００４０】
イベント認識部の包括的方法３１２及び３５０のアクティブイベント認識部判定モジュール３１６及び３５４は、それぞれ、ビュー階層内の１つ又は複数のビューがサブイベントの特定のシーケンスを受信すべきかを判定する。図３Ａは、サブイベント３０１を受信する例示的な活動中のビュー３０２、３０４及び３０５の集合を示す。図３Ａの例において、アクティブイベント認識部判定モジュール３０４は、最高レベルのビュー３０２、探索結果パネル３０４及び地図ビュー３０５がサブイベント３０１により示されたタッチの物理的位置を含むため、これらのビューが能動的に関与したビューであると判定するだろう。尚、タッチサブイベント３０１が地図ビュー３０５と関連付けられたエリアに全体的に限定されたとしても、探索結果パネル３０４及び最高レベルのビュー３０２は、地図ビュー３０５の祖先であるため、能動的に関与したビューに依然として存在するだろう。
【００４１】
いくつかの実施形態において、アクティブイベント認識部判定モジュール３１６及び３５４は、類似の処理を利用する。
【００４２】
サブイベント配信モジュール３１８は、能動的に関与したビューに対するイベント認識部にサブイベントを配信する。図３Ａの例を使用して、タッチマーク３０１−１、３０１−２及び３０１−３によりユーザのタッチを階層の種々のビューに示す。いくつかの実施形態において、このユーザのタッチを示すサブイベントデータは、能動的に関与したビュー、すなわち最高レベルのビュー３０２、探索結果パネル３０４及び地図ビュー３０５において、サブイベント配信モジュール３１８によりイベント認識部に配信される。また、ビューのイベント認識部は、ビュー内で開始するイベントの後続サブイベントを受信する（例えば、初期サブイベントがビュー内で発生する場合）。別の方法で示すと、ビューは、ビューの外側で継続する場合でも、ビューで開始するユーザ対話と関連付けられたサブイベントを受信する。
【００４３】
いくつかの実施形態において、サブイベント配信モジュール３５６は、サブイベント配信モジュール３１８により使用された処理に類似する処理において、能動的に関与したプログラムレベルに対するイベント認識部にサブイベントを配信する。
【００４４】
いくつかの実施形態において、別個のイベント認識部構造３２０又は３６０は、能動的に関与したイベント認識部毎に生成され且つデバイスのメモリに格納される。一般にイベント認識部構造３２０及び３６０は、それぞれ、イベント認識部状態３３４、３７４（図４Ａ及び図４Ｂを参照する際に以下に更に詳細に説明する）、それぞれが状態遷移マシン３４０、３８０を有するイベント認識部専用コード３３８、３７８を含む。イベント認識部構造３２０はビュー階層基準３３６を更に含み、イベント認識部構造３６０はプログラム階層基準３７６を含む。特定のイベント認識部の各例は、厳密に１つのビュー又はプログラムレベルを参照する。ビュー階層基準３３６又はプログラム階層基準３７６（特定のイベント認識部に対する）は、それぞれのイベント認識部に論理的に結合されるビュー又はプログラムレベルを明らかにするために使用される。
【００４５】
ビューメタデータ３４１及びレベルメタデータ３８１は、それぞれ、ビュー又はレベルに関するデータを含んでもよい。ビューメタデータ又はレベルメタデータは、イベント認識部へのサブイベント配信に影響を及ぼす可能性のある少なくとも以下の特性を含んでもよい。
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベル及びビュー又はプログラム階層における祖先と関連付けられたイベント認識部へのサブイベント配信を防止する停止特性３４２、３８２。
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベルと関連付けられたイベント認識部へのサブイベント配信を防止するが、ビュー又はプログラム階層における祖先へのサブイベント配信を可能にするスキップ特性３４３、３８３。
・ビューに対して設定された場合、ビューがヒットビューでない限り、ビューと関連付けられたイベント認識部へのサブイベントの配信を防止する。上述したように、ヒットビュー判定モジュール３１４は、サブイベントを処理すべき階層における最低ビューとしてヒットビュー（又はヒットレベル判定モジュール３５２の場合はヒットレベル）を識別する。
【００４６】
イベント認識部構造３２０及び３６０は、それぞれ、メタデータ３２２、３６２を含んでもよい。いくつかの実施形態において、メタデータ３２２、３６２は、イベント配信システムが能動的に関与したイベント認識部へのサブイベント配信を実行すべき方法を示す構成可能な特性、フラグ及びリストを含む。いくつかの実施形態において、メタデータ３２２、３６２は、イベント認識部が互いに対話してもよい方法を示す構成可能な特性、フラグ及びリストを含んでもよい。いくつかの実施形態において、メタデータ３２２、３６２は、ビュー又はプログラム階層における変動レベルにサブイベントが配信されるかを示す構成可能な特性、フラグ及びリストを含んでもよい。いくつかの実施形態において、イベント認識部メタデータ３２２、３６２とビューメタデータ又はレベルメタデータ（３４１、３８１のそれぞれ）との組合せは、双方とも、ａ）能動的に関与したイベント認識部へのサブイベント配信を実行し、ｂ）イベント認識部が互いに対話してもよい方法を示し、且つｃ）サブイベントがビュー又はプログラム階層において種々のレベルに配信されるか及び配信される時を示すようにイベント配信システムを構成するために使用されるものである。
【００４７】
尚、いくつかの実施形態において、それぞれのイベント認識部は、イベント認識部の構造３２０、３６０のフィールドにより規定されたように、イベント認識動作３３３、３７３をそれぞれの対象３３５、３７５に送出する。動作を対象に送出することは、サブイベントをそれぞれのヒットビュー又はヒットレベルに送出（及び遅延送出）することとは別個である。
【００４８】
対応するイベント認識部のそれぞれのイベント認識部構造３２０、３６０に格納されたメタデータ特性は、少なくとも以下のことを含む。
・イベント認識部に対して設定された場合、イベント認識部によりイベントを認識すると、イベント配信システムが、能動的に関与したビュー又はプログラムレベルの他のあらゆるイベント認識部（例外リスト３２６、３６６に列挙された他のあらゆるイベント認識部を除く）へのサブイベントの配信を停止すべきことを示す排他性フラグ３２４、３６４。対応する排他性フラグ３２４又は３６４により示されたように、サブイベントを受信することにより特定のイベント認識部が排他的状態になる場合、後続サブイベントは、排他的状態のイベント認識部（及び例外リスト３２６、３６６に列挙された他のあらゆるイベント認識部）にのみ配信される。
・いくつかのイベント認識部構造３２０、３６０は、排他性例外リスト３２６、３６６を含んでもよい。このリスト３２６、３６６は、それぞれのイベント認識部に対するイベント認識部構造３２０、３６０に含まれる場合、それぞれのイベント認識部が排他的状態になった後もサブイベントを受信し続けるイベント認識部の集合を示す。例えば、シングルタップイベントに対するイベント認識部が排他的状態になり、且つ現在含まれているビューがダブルタップイベントに対するイベント認識部を含む場合、リスト３２０、３６０は、シングルタップイベントが検出された後もダブルタップイベントが認識されるように、ダブルタップイベント認識部を列挙するだろう。従って、排他性例外リスト３２６、３６６により、イベント認識部は、サブイベントの共通のシーケンスを共有する種々のイベントを認識できる。例えばシングルタップイベント認識は、他のイベント認識部によるダブルタップイベント又はトリプルタップイベントの後続認識を排除しない。
・いくつかのイベント認識部構造３２０、３６０は、待ちリスト３２７、３６７を含んでもよい。このリスト３２７、３６７は、それぞれのイベント認識部に対するイベント認識部構造３２０、３６０に含まれる場合、それぞれの認識部がそれぞれのイベントを認識する前にイベント不可能状態又はイベント取消状態になるべきであるイベント認識部の集合を示す。実質的に、列挙されたイベント認識部は、イベントを認識するための優先順位が待ちリスト３２７、３６７を含むイベント認識部より高い。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されるまで、イベント認識部がサブイベント（タッチ開始サブイベント又はフィンガーダウンサブイベント及び後続イベントを含む）をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ開始済フラグ３２８、３６８。このフラグは、ジェスチャが認識される場合にヒットビュー又はヒットレベルがいずれかのサブイベントを参照するのを防止するために使用される。イベント認識部がイベントを認識できない場合、タッチ開始済サブイベント（及びサブ後続タッチ終了サブイベント）は、ヒットビュー又はヒットレベルに配信される。一例において、そのようなサブイベントをヒットビュー又はヒットレベルに配信することにより、ユーザインタフェースは、オブジェクトと関連付けられた動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されるまで、イベント認識部がサブイベント（例えば、タッチ終了サブイベント）をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ終了フラグ３３０、３７０。これは、ジェスチャが後で認識される場合にヒットビュー又はヒットレベルがタッチ終了サブイベントに影響を及ぼすのを防止するために使用される。タッチ終了サブイベントが送出されない限り、取り消されたタッチはヒットビュー又はヒットレベルに送出される。イベントが認識される場合、アプリケーションにより対応する動作が実行され、タッチ終了サブイベントはヒットビュー又はヒットレベルに配信される。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されている際、イベント認識部がタッチ取消又は入力取消をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出させるタッチ取消フラグ３３２、３７２。ヒットビュー又はヒットレベルに送出されたタッチ取消又は入力取消は、先行するサブイベント（例えば、タッチ開始済サブイベント）が取り消されたことを示す。タッチ取消又は入力取消により、入力源ハンドラの状態（図４Ｂを参照）は入力シーケンス取消済状態４６０（以下に説明する）になってもよい。
【００４９】
いくつかの実施形態において、例外リスト３２６、３６６は、非排他的イベント認識部により更に使用されてもよい。特に、非排他的イベント認識部がイベントを認識する場合、後続サブイベントは、イベントを認識したイベント認識部の例外リスト３２６、３６６に列挙された排他的イベント認識部を除いて、現在活動中のビューと関連付けられた排他的イベント認識部に配信されない。
いくつかの実施形態において、イベント認識部は、望ましくないサブイベントがヒットビューに配信されるのを防止するために、遅延タッチ終了フラグと組み合わせてタッチ取消フラグを利用するように構成されてもよい。例えば、シングルタップジェスチャの定義とダブルタップジェスチャの前半とは同一である。シングルタップイベント認識部がシングルタップを正常に認識すると、望ましくない動作が起こるだろう。遅延タッチ終了フラグが設定される場合、シングルタップイベントが認識されるまで、シングルタップイベント認識部がサブイベントをヒットビューに送出するのを防止する。また、シングルタップイベント認識部の待ちリストがダブルタップイベント認識部を識別できるため、ダブルタップイベント認識部がイベント不可能状態になるまで、シングルタップイベント認識部がシングルタップを認識するのを防止する。待ちリストを使用することにより、ダブルタップジェスチャが実行される際にシングルタップと関連付けられた動作を実行するのを回避する。その代わり、ダブルタップイベントの認識に応答して、ダブルタップと関連付けられた動作のみが実行される。
【００５０】
タッチセンシティブ表面上のユーザタッチの形態を特に参照すると、上述したように、タッチ及びユーザジェスチャは瞬時でなくてもよい動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含んでもよい。しかし、タッチデータ構造は、特定の時間のタッチの状態（すなわち、より一般的にはあらゆる入力源の状態）を定義する。従って、タッチデータ構造に格納された値がシングルタッチのコースを変更することにより、異なる時点のシングルタッチの状態をアプリケーションに搬送できる。
【００５１】
各タッチデータ構造は種々のフィールドを備える。いくつかの実施形態において、タッチデータ構造は、少なくとも図３Ｂのタッチ専用フィールド３３９又は図３Ｃの入力源専用フィールド３７９に対応するデータを含んでもよい。
【００５２】
例えば、図３Ｂの「ビューに対する第１のタッチ」フィールド３４５（図３Ｃの「レベルに対する第１のタッチ」３８５）は、タッチデータ構造が特定のビューに対する第１のタッチを定義するかどうかを示す（ビューを実現するソフトウェア要素がインスタンス化されたため）。「タイムスタンプ」フィールド３４６、３８６は、タッチデータ構造が関連する特定の時間を示す。
【００５３】
オプションとして、「情報(info)」フィールド３４７、３８７は、タッチが基本的なジェスチャであるかを示すために使用されてもよい。例えば「情報」フィールド３４７、３８７は、タッチがスワイプ（swipe）であるかを示し、スワイプである場合にはスワイプを配向する方向を示す。スワイプとは、１つ以上の指を直線方向に迅速にドラッグすることである。ＡＰＩ実現例（以下に説明する）は、タッチがスワイプであるかを判定し且つその情報を「情報」フィールド３４７、３８７を介してアプリケーションに渡すことにより、タッチがスワイプであった場合に必要であったと考えられるあるデータ処理のアプリケーションを減少させる。
【００５４】
オプションとして、図３Ｂの「タップカウント(Tap Count)」フィールド３４８（図３Ｃの「イベントカウント(Event Count)」フィールド３８８）は、初期タッチの位置で順次実行されたタップの数を示す。タップは、特定の位置でタッチセンシティブパネルに対して指を迅速に押下し且つ離すものとして定義される。指がパネルの同一の位置で迅速に継続して再度押下され且つ解放される場合、複数の連続したタップが発生する。イベント配信システム１２４は、タップをカウントし、「タップカウント」フィールド３４８を介してこの情報をアプリケーションに中継する。同一の場所における複数のタップは、有用であり且つタッチ対応インタフェースに対する覚えやすいコマンドであると考えられることもある。従って、タップをカウントすることにより、イベント配信システム１２４は、アプリケーションからのあるデータ処理を再度減少させる。
【００５５】
「段階(phase)」フィールド３４９、３８９は、タッチに基づくジェスチャが現在ある特定の段階を示す。段階フィールド３４９、３８９は、タッチデータ構造が先行するタッチデータ構造により参照されていない新しいタッチを定義することを示す「タッチ段階開始済(Touch phase began)」等の種々の値を有する。「タッチ段階移動済(Touch phase moved)」値は、定義されているタッチが従来の位置から移動したことを示す。「タッチ段階静止(Touch phase stationary)」値は、タッチが同一の位置に留まっていることを示す。「タッチ段階終了済(Touch phase ended)」値は、タッチが終了した（例えば、ユーザがマルチタッチディスプレイの表面から指を離した）ことを示す。「タッチ段階取消済(Touch phase cancelled)」値は、タッチがデバイスにより取り消されたことを示す。取り消されたタッチは、ユーザにより必ずしも終了されなくてもよいが、デバイスが無視することを判定したタッチである。例えばデバイスは、タッチが意図せず（すなわち、ポータブルマルチタッチ対応デバイスをポケットに入れた結果）生成されていると判定し、その理由によりタッチを無視する。「段階フィールド(Phase field」３４９、３８９の各値は整数である。
【００５６】
従って、各タッチデータ構造は、特定の時間にタッチ（又は他の入力源）で発生していること（例えば、タッチが静止しているか、移動しているか等）及びタッチと関連付けられた他の情報（位置等）を定義する。従って、各タッチデータ構造は、特定の瞬間の特定のタッチの状態を定義する。同一の時間を参照する１つ以上のタッチデータ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義するタッチイベントデータ構造に追加される（上述したように、いくつかのタッチデータ構造は、終了し且つもう受信されていないタッチを更に参照してもよい）。複数のタッチイベントデータ構造は、ビューで発生しているタッチを示す連続した情報をソフトウェアに提供するために、時間が経つにつれビューを実現するソフトウェアに送出される。
【００５７】
オプションとしてマルチタッチジェスチャを含む複雑なタッチに基づくジェスチャを処理する機能は、種々のソフトウェア要素を複雑にする。いくつかの例において、そのように複雑になることにより、高度な所望のインタフェース機能を実現する必要がある。例えばゲームは、同時に複数のボタンを押下したり、あるいは加速度計データをタッチセンシティブ表面上のタッチと組み合わせたりすることを必要とする場合が多いため、種々のビューで発生する複数の同時のタッチを処理する機能を必要とするだろう。しかし、いくつかのより単純なアプリケーション及び／又はビュー（並びに、それらと関連付けられたソフトウェア要素）は、高度なインタフェース機能を必要としなくてもよい。例えば単純なソフトボタン（すなわち、タッチセンシティブディスプレイ上に表示されるボタン）は、マルチタッチ機能性ではなくシングルタッチで十分に動作できる。これらの場合、基礎となるＯＳは、シングルタッチ（例えば、ソフトボタン上のシングルタッチ又はシングルタップ）のみにより動作可能であることを意図するビューと関連付けられたソフトウェア要素に不必要なタッチデータ又は過剰なタッチデータ（例えば、マルチタッチデータ）を送出してもよい。ソフトウェア要素は、このデータを処理する必要があるため、シングルタッチのみが関連するビューと関連付けられても、複数のタッチを処理するソフトウェア要素の全ての複雑さを備える必要があるだろう。従来マウスインタフェース環境（すなわち、種々のボタン等）でプログラムするのが容易であったソフトウェア要素がマルチタッチ環境で非常により複雑になる可能性があるため、これによりデバイスに対してソフトウェアを開発するコストが増加する。
【００５８】
しかし、タッチセンシティブ表面上でユーザタッチを評価し且つ処理する複雑さに関する上記の説明は、それぞれ、入力デバイス１２８及び１５８を備える電子デバイス１０２及び１０４を操作する全ての形態のユーザ入力に更に当てはまり、ユーザ入力の全てがタッチスクリーン上で開始されるわけではなく、例えば、認識されるイベントを定義するサブイベントに対応する入力として利用されてもよい一回又は複数回のキーボード押下又はキーボード保持を含むかあるいは含まないマウスの移動及びマウスボタンの押下、タッチパッド上のユーザ移動タップ、ドラッグ、スクロール等、ペンスタイラスの入力、音声命令、検出された眼球運動、生体情報認識入力、検出されたユーザの生理学的変化、並びに／あるいはそれらのあらゆる組合せを連係することが理解されるだろう。
【００５９】
図４Ａは、４つの状態を含むイベント認識部状態遷移マシン４００を示す。受信したサブイベントに基づいてイベント認識部状態遷移マシン４００の状態遷移を管理することにより、イベント認識部はイベント定義を効率的に表す。例えばタップジェスチャは、２つ又はオプションとして３つのサブイベントのシーケンスにより効率的に定義されてもよい。第１に、タッチは検出されるべきであり、これはサブイベント１となる。例えばタッチサブイベントは、状態遷移マシン４００を有するイベント認識部を含むビューでタッチセンシティブ表面に触れるユーザの指であってもよい。第２に、タッチが実質的に所定の方向に全く移動しないオプションの測定された遅延（例えばタッチ位置のあらゆる移動は、ディスプレイ上で距離（例えば、５ｍｍ）又は画素数（例えば、５画素）として測定されてもよい所定の閾値より小さい）及び遅延は、十分に短く、サブイベント２として提供される。最後に、タッチの終了（例えば、タッチセンシティブ表面からユーザの指を離すこと）は、サブイベント３として提供される。これらのサブイベントを受信することに基づいてイベント認識部状態遷移マシン４００を状態間の遷移に符号化することにより、イベント認識部状態遷移マシン４００は、タップジェスチャイベント定義を効率的に表す。
【００６０】
イベントの種類にかかわらず、イベント認識部状態遷移マシン４００は、イベント認識開始状態４０５から開始し、受信するサブイベントに依存して残りの状態のうちのいずれかに進んでもよい。イベント認識部状態遷移マシン４００の説明を容易にするために、イベント可能状態４１０からの経路を説明した後、イベント認識開始状態４０５からイベント認識済状態４１５、イベント可能状態４１０及びイベント不可能状態４２０への直接経路を説明する。
【００６１】
イベント認識開始状態４０５から開始し、単独でイベントのイベント定義を含むサブイベントが受信される場合、イベント認識部状態遷移マシン４００はイベント認識済状態４１５に遷移する。
【００６２】
状態イベント認識開始４０５から開始し、イベント定義の第１のサブイベントではないサブイベントが受信される場合、イベント認識部状態遷移マシン４００はイベント不可能状態４２０に遷移する。
【００６３】
イベント認識開始状態４０５から開始し、所定のイベント定義の第１のサブイベントであり且つ最後のサブイベントではないサブイベントが受信される場合、イベント認識部状態遷移マシン４００はイベント可能状態４１０に遷移する。受信する次のサブイベントが所定のイベント定義の第２のサブイベントであるが、最後のサブイベントではない場合、イベント認識部状態遷移マシン４００は状態イベント可能４１０のままである。受信したサブイベントのシーケンスがイベント定義の部分であり続ける限り、イベント認識部状態遷移マシン４００は状態イベント可能４１０のままである。イベント認識部状態遷移マシン４００は、常にイベント可能状態４１０であり且つイベント定義の一部ではないサブイベントを受信する場合、状態イベント不可能４２０に遷移することにより、現在のイベント（もしあれば）がこのイベント認識部（すなわち、状態４００に対応するイベント認識部）に対応するイベントの種類ではないと判定する。一方、イベント認識部状態遷移マシン４００は、イベント可能状態４１０であり且つイベント定義の最後のサブイベントを受信する場合、イベント認識済状態４１５に遷移することにより、正常なイベント認識を完了する。
【００６４】
図４Ｂは、ビューがそれぞれの入力に関する情報を受信する方法を示す有限の状態遷移マシンを有する入力源処理過程（input source handling process）４４０の一実施形態を示す。尚、デバイスのタッチセンシティブ表面上に複数のタッチがある場合、各タッチは、自身の有限の状態遷移マシンを有する別個の入力源である。本実施形態において、入力源処理過程４４０は、入力シーケンス開始４４５、入力シーケンス継続４５０、入力シーケンス終了済４５５及び入力シーケンス取消済４６０の４つの状態を含む。入力源処理過程４４０は、例えば入力シーケンスの完了が検出された後で初めて入力がアプリケーションに配信される場合、それぞれのイベント認識部により使用されてもよい。入力源処理過程４４０は、アプリケーションに配信された入力シーケンスに応答して実行された変化を取り消せないかあるいは解除できないアプリケーションで使用される。
【００６５】
入力シーケンス開始４４５から開始し、単独で入力シーケンスを完了する入力が受信される場合、入力源処理過程４４０は入力シーケンス終了済４５５に遷移する。
【００６６】
入力シーケンス開始４４５から開始し、終了した入力シーケンスを示す入力が受信される場合、入力源処理過程４４０は入力シーケンス取消済４６０に遷移する。
【００６７】
入力シーケンス開始４４５から開始し、入力シーケンスの第１の入力であり且つ最後の入力ではない入力が受信される場合、入力源処理過程４４０は、状態入力シーケンス継続４５０に遷移する。受信する次の入力が入力シーケンスの第２の入力である場合、入力処理過程４４０は状態入力シーケンス継続４５０のままである。配信されるサブイベントのシーケンスが所定の入力シーケンスの部分であり続ける限り、入力源処理過程４４０は状態入力シーケンス継続４５０のままである。入力源処理過程４４０は、常に状態入力シーケンス継続４５０であり且つ入力シーケンスの部分ではない入力を受信する場合、状態入力シーケンス取消済４６０に遷移する。一方、入力源処理過程４４０は、入力シーケンス継続４５０であり且つ所定の入力定義の最後の入力を受信する場合、入力シーケンス終了済４５５に遷移することにより、サブイベントのグループを正常に受信する。
【００６８】
いくつかの実施形態において、入力源処理過程４４０は、特定のビュー又はプログラムレベルに対して実現されてもよい。その場合、サブイベントの特定のシーケンスは、結果として状態入力取消済４６０に遷移してもよい。
【００６９】
一例として、能動的に関与したビュー入力源ハンドラ４８０（以下、「ビュー４８０」）のみで表された能動的に関与したビューを想定する図４Ｃを考える。ビュー４８０は、イベント認識部のうちの１つとして縦スワイプイベント認識部４６８（以下、「認識部４６８」）のみで表された縦スワイプイベント認識部を含む。この場合、認識部４６８は、１）フィンガーダウン４６５−１、２）オプションのわずかな遅延４６５−２、３）少なくともＮ画素の縦スワイプ４６５−３及び４）フィンガーリフトオフ４６５−４を検出することを定義の一部として必要としてもよい。
【００７０】
例えば認識部４６８は、設定された遅延タッチ開始済フラグ３２８及びタッチ取消フラグ３３２を更に有する。次に、認識部４６８及びビュー４８０への以下のサブイベントのシーケンスの配信を考える。
・サブイベントシーケンス４６５−１：認識部４６８のイベント定義に対応するフィンガーダウン検出
・サブイベントシーケンス４６５−２：認識部４６８のイベント定義に対応する遅延測定
・サブイベントシーケンス４６５−３：指は、縦方向のスクローリングと互換性のある縦スワイプ移動を実行するがＮ画素より小さいため、認識部４６８のイベント定義に対応しない
・サブイベントシーケンス４６５−４：認識部４６８のイベント定義に対応するフィンガーリフトオフ検出
【００７１】
次に認識部４６８は、イベント定義の一部としてサブイベント１及び２を正常に認識することにより、サブイベント３の配信の直前にイベント可能４７２の状態になるだろう。認識部４６８が設定された遅延タッチ開始済フラグ３２８を有するため、初期タッチサブイベントはヒットビューに送出されない。従って、ビュー４８０の入力源処理過程４４０は、サブイベント３の配信の直前に依然として状態入力シーケンス開始のままだろう。
【００７２】
認識部４６８へのサブイベント３の配信が完了すると、認識部４６８の状態はイベント不可能４７６に遷移し、次に認識部４６８が、サブイベントのシーケンスが特定の縦スワイプジェスチャイベントの種類に対応しないと判定した（すなわち、認識部４６８は、イベントが縦スワイプではないと判断した。換言すると、縦スワイプとしての認識４７４はこの例では発生しない）ことが重要である。ビュー入力源ハンドラ４８０に対する入力源処理システム４４０は、その状態を更に更新する。いくつかの実施形態において、イベント認識部がイベントを認識し始めたことを示すステータス情報を送出する場合、ビュー入力源ハンドラ４８０の状態は、入力シーケンス開始状態４８２から入力シーケンス継続状態４８４に進むだろう。イベント認識部のタッチ取消フラグ３２２が設定されたためにイベントが認識されずにタッチ又は入力が終了する場合、ビュー入力源ハンドラ４８０は入力シーケンス取消済状態４８８になる。あるいは、イベント認識部のタッチ取消フラグ３２２が設定されていない場合、ビュー入力源ハンドラ４８０は、入力のタッチが終了する際に入力シーケンス終了済状態４８６になる。
【００７３】
イベント認識部４６８のタッチ取消フラグ３３２が設定されるため、イベント認識部４６８がイベント不可能状態４７６に遷移する場合、認識部は、タッチ取消のサブイベント又はメッセージをイベント認識部に対応するヒットビューに送出する。その結果、ビュー入力源ハンドラ４８０は状態入力シーケンス取消済４８８に遷移する。
【００７４】
いくつかの実施形態において、ビュー入力源ハンドラ４８０の他のイベント認識部がある場合は、サブイベントのシーケンスを解析し続けてもよいが、サブイベント４６５−４の配信は、認識部４６８により判断されたいずれのイベント認識にも密接に関連しない。
【００７５】
以下の表は、ビュー入力源ハンドラ４８０の状態と共に、上述したイベント認識部４６８の状態に関連するようなこの例示的なサブイベントシーケンス４６５の処理を要約した表形式で示す。この例において、認識部４６８のタッチ取消フラグ３３２が設定されたため、ビュー入力源ハンドラ４８０の状態は入力シーケンス開始４４５から入力シーケンス取消済４８８に進む。
【００７６】
【表１】
0005594914.tif 000002
【００７７】
図５Ａを参照し、複数のイベント認識部を含む或るビューにより受信されているサブイベントシーケンス５２０の一例に注目する。例えば、２つのイベント認識部、すなわちスクローリングイベント認識部５８０及びタップイベント認識部５９０を図５Ａに示す。説明のために、図３Ａのビュー探索結果パネル３０４は、サブイベントシーケンス５２０の受信、並びにスクローリングイベント認識部５８０及びタップイベント認識部５９０における状態変遷に関連する。尚、この例において、サブイベント５２０のシーケンスは、タッチセンシティブディスプレイ又はトラックパッド上のタップフィンガージェスチャを定義するが、同一のイベント認識技術が、マウスボタンの押下を検出する等の無数の状況及び／又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【００７８】
第１のサブイベントがビュー探索結果パネル３０４に配信される前、イベント認識部５８０及び５９０は、それぞれ、イベント認識開始状態５８２及び５９２である。タッチサブイベント３０１−２としてビュー探索結果パネル３０４に対して能動的に関与したイベント認識部（及びタッチサブイベント３０１−３として地図ビュー３０５に対して能動的に関与したイベント認識部）にフィンガーダウン検出５２１−１サブイベントとして配信されるタッチ３０１に続き、スクローリングイベント認識部５８０は状態イベント可能５８４に遷移し、同様にタップイベント認識部５９０は状態イベント可能５９４に遷移する。これは、タッチ及びスクロールの双方のイベント定義が、タッチセンシティブ表面上でフィンガーダウンを検出すること等のタッチで開始するためである。
【００７９】
タップジェスチャ及びスクロールジェスチャのいくつかの定義は、オプションとして、イベント定義の初期タッチと何らかの次のステップとの間の遅延を含んでもよい。本明細書で説明する全ての例において、タップジェスチャ及びスクロールジェスチャの双方に対するイベント定義は、第１のタッチサブイベント（フィンガーダウン検出）に後続する遅延サブイベントを認識する。
【００８０】
従って、測定遅延５２１−２サブイベントがイベント認識部５８０及び５９０に配信されるため、双方は、それぞれ、イベント可能状態５８４及び５９４のままである。
【００８１】
最後に、フィンガーリフトオフ検出５２１−３サブイベントは、イベント認識部５８０及び５９０に配信される。この場合、タップ及びスクロールのイベント定義が異なるため、イベント認識部５８０及び５９０の状態遷移は異なる。スクローリングイベント認識部５８０の場合、状態イベント可能のままである次のサブイベントは移動を検出するサブイベントだろう。しかし、配信されたサブイベントがフィンガーリフトオフ検出５２１−３であるため、スクローリングイベント認識部５８０は状態イベント不可能５８８に遷移する。しかし、タップイベント定義はフィンガーリフトオフサブイベントで終了する。従って、タップイベント認識部５９０は、フィンガーリフトオフ５２１−３サブイベントが配信された後で状態イベント認識済５９６に遷移する。
【００８２】
尚、いくつかの実施形態において、図４Ｂ及び図４Ｃに関連して上述したように、図４Ｂで説明された入力源処理過程４４０は、ビューレベルで種々の目的のために使用されてもよい。以下の表は、イベント認識部５８０、５９０に関連するようなサブイベントシーケンス５２０の配信及び入力源処理過程４４０を要約した表形式で示す。
【００８３】
【表２】
0005594914.tif 000003
【００８４】
図５Ｂを参照し、複数のイベント認識部を含むビューにより受信されているサブイベントシーケンス５３０の別の例に注目する。例えば、２つのイベント認識部、すなわちスクローリングイベント認識部５８０及びタップイベント認識部５９０を図５Ｂに示す。説明のために、図３Ａのビュー探索結果パネル３０４は、サブイベントシーケンス５３０の受信、並びにスクローリングイベント認識部５８０及びタップイベント認識部５９０における状態変遷に関連する。尚、この例において、サブイベント５３０のシーケンスは、タッチセンシティブディスプレイ上のスクロールフィンガージェスチャを定義するが、同一のイベント認識技術が、マウスボタンの押下、マウスの移動及びマウスボタンの解放を検出する等の無数の状況、並びに／又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【００８５】
第１のサブイベントがビュー探索結果パネル３０４に対して能動的に関与したイベント認識部に配信される前、イベント認識部５８０及び５９０は、それぞれ、イベント認識開始状態５８２及び５９２である。タッチ３０１に対応するサブイベントの配信（上述したような）に続き、スクローリングイベント認識部５８０は状態イベント可能５８４に遷移し、同様にタップイベント認識部５９０は状態イベント可能５９４に遷移する。
【００８６】
測定遅延５３１−２サブイベントがイベント認識部５８０及び５９０に配信されるため、双方は、それぞれ、イベント可能状態５８４及び５９４に遷移する。
【００８７】
次に、フィンガー移動検出５３１−３サブイベントはイベント認識部５８０及び５９０に配信される。この場合、タップ及びスクロールのイベント定義が異なるため、イベント認識部５８０及び５９０の状態遷移は異なる。スクローリングイベント認識部５８０の場合、状態イベント可能のままである次のサブイベントは移動を検出するサブイベントであるため、スクローリングイベント認識部５８０は、フィンガー移動検出５３１−３サブイベントを受信する場合にイベント可能状態５８４のままである。しかし、上述したように、タップの定義がフィンガーリフトオフサブイベントで終了するため、タップイベント認識部５９０は状態イベント不可能５９８に遷移する。
【００８８】
最後に、フィンガーリフトオフ検出５３１−４サブイベントはイベント認識部５８０及び５９０に配信される。タップイベント認識部は既にイベント不可能状態５９８であり、状態遷移は発生しない。スクローリングイベント認識部５８０のイベント定義は、フィンガーリフトオフを検出して終了する。配信されたサブイベントがフィンガーリフトオフ検出５３１−４であるため、スクローリングイベント認識部５８０は状態イベント認識済５８６に遷移する。尚、タッチセンシティブ表面上のフィンガー移動が複数の移動サブイベントを生成するため、スクロールは、リフトオフの前に認識され且つリフトオフまで継続してもよい。
【００８９】
以下の表は、イベント認識部５８０、５９０に関連するようなサブイベントシーケンス５３０の配信及び入力源処理過程４４０を要約した表形式で示す。
【００９０】
【表３】
0005594914.tif 000004
【００９１】
図５Ｃを参照し、複数のイベント認識部を含む或るビューにより受信されているサブイベントシーケンス５４０の別の例に注目する。例えば、２つのイベント認識部、すなわちダブルタップイベント認識部５７０及びタップイベント認識部５９０を図５Ｃに示す。説明のために、図３Ａの地図ビュー３０５は、サブイベントシーケンス５４０の受信、並びにダブルタップイベント認識部５７０及びタップイベント認識部５９０における状態変遷に関連する。尚、この例において、サブイベント５４０のシーケンスは、タッチセンシティブディスプレイ上のダブルタップジェスチャを定義するが、同一のイベント認識技術が、マウスダブルクリックを検出する等の無数の状況及び／又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【００９２】
第１のサブイベントが地図ビュー３０５に対して能動的に関与したイベント認識部に配信される前、イベント認識部５７０及び５９０は、それぞれ、イベント認識開始状態５７２及び５９２である。タッチサブイベント３０１に関連したサブイベントの地図ビュー３０４への配信（上述したような）に続き、ダブルタップイベント認識部５７０及びタップイベント認識部５９０は、それぞれ、状態イベント可能５７４及び５９４に遷移する。これは、タップ及びダブルタップの双方のイベント定義がタッチセンシティブ表面上でフィンガーダウンを検出する等のタッチで開始するためである。
【００９３】
測定遅延５４１−２サブイベントがイベント認識部５７０及び５９０に配信されるため、双方は、それぞれ、状態イベント可能５７４及び５９４のままである。
【００９４】
次に、フィンガーリフトオフ検出５４１−３サブイベントはイベント認識部５７０及び５９０に配信される。この場合、タップ及びダブルタップのイベント定義が異なるため、イベント認識部５８０及び５９０の状態遷移は異なる。タップイベント認識部５９０の場合、イベント定義の最後のサブイベントがフィンガーリフトオフを検出するサブイベントであるため、タップイベント認識部５９０はイベント認識済状態５９６に遷移する。
【００９５】
しかし、ユーザが最終的に実行する可能性があることに関係なく遅延が開始しているため、ダブルタップ認識部５７０は状態イベント可能５７４のままである。完全なタップサブイベントシーケンスが後続するが、ダブルタップの完全なイベント認識定義は別の遅延を必要とする。これにより、既に状態イベント認識済５７６であるタップイベント認識部５９０と依然として状態イベント可能５７４のままであるダブルタップ認識部５７０との間のような曖昧な状況が発生する。
【００９６】
従って、いくつかの実施形態において、イベント認識部は、図３Ｂ及び図３Ｃに関連して上述したような排他性フラグ及び排他性例外リストを実現してもよい。本明細書において、タップイベント認識部５９０に対する排他性フラグ３２４が設定され、更にタップイベント認識部５９０に対する排他性例外リスト３２６は、タップイベント認識部５９０が状態イベント認識済５９６になった後にいくつかのイベント認識部（ダブルタップイベント認識部５７０等）へのサブイベントの配信を許可し続けるように構成されるだろう。
【００９７】
タップイベント認識部５９０は状態イベント認識済５９６のままであり、サブイベントシーケンス５４０はダブルタップサブイベント認識部５７０に配信され続ける。遅延測定５４１−４サブイベント、フィンガーダウン検出５４１−５サブイベント及び遅延測定５４１−６サブイベントはダブルタップ認識部５７０を状態イベント可能５７４に維持し、最後のシーケンスのサブイベント５４０、すなわちフィンガーリフトオフ検出５４１−７の配信により、ダブルタップ認識部５７０は状態イベント認識済５７６に遷移する。
【００９８】
この時点で、地図ビュー３０５は、タップイベント認識部５９０により認識されたシングルタップイベントではなく、イベント認識部５７０により認識されたようなイベントダブルタップを選択する。ダブルタップイベントを選択するという判断は、設定されるタップイベント認識部５９０の排他的フラグ３２４、ダブルタップイベントを含むタップイベント認識部５９０の排他性例外リスト３２６、並びにタップイベント認識部５９０及びダブルタップ認識部５７０の双方がそれぞれのイベントの種類を正常に認識したという事実の組合せを考慮して行われる。
【００９９】
以下の表は、イベント認識部５７０及び５９０に関連するようなサブイベントシーケンス５４０の配信、並びにサブイベント処理過程４４０を要約した表形式で示す。
【０１００】
【表４】
0005594914.tif 000005
【０１０１】
別の実施形態において、図５Ｃのイベントの例では、シングルタップイベント認識部がダブルタップイベント認識部を識別する待ちリストを有するため、シングルタップジェスチャは識別されない。その結果、（実行されたとしても）ダブルタップイベント認識部がイベント不可能状態になるまで、シングルタップジェスチャは認識されない。ダブルタップジェスチャが認識されるこの例において、ダブルタップジェスチャが認識されるまで、シングルタップイベント認識部はイベント可能状態のままだろう。その時点で、シングルタップイベント認識部はイベント不可能状態に遷移するだろう。
【０１０２】
次に、いくつかの実施形態に係るイベント認識方法を示すフローチャートである図６Ａ及び図６Ｂに注目する。上述したように、いくつかの実施形態において電子デバイス１０２又は１０４であってもよい電子デバイスで方法６００を実行する。いくつかの実施形態において、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチセンシティブ表面を含んでもよい。あるいは、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチスクリーンを含んでもよい。
【０１０３】
方法６００は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成される。方法６００は、ビュー階層の１つ以上のビューを表示し（６０８）、１つ以上のソフトウェア要素を実行する（６１０）。各ソフトウェア要素は特定のビューと関連付けられ、各特定のビューは、それぞれ、イベント認識部構造３２０及び３６０として図３Ｂ及び図３Ｃで説明されたような１つ以上のイベント認識部を含む。
【０１０４】
一般に各イベント認識部は、１つ以上のサブイベントに基づいて状態遷移マシンとして実現されてもよいイベント定義を含む。状態遷移マシンについては、例えば図３Ｂの状態遷移マシン３４０を参照する。更にイベント認識部は、一般に、対象に対する動作を規定するイベントハンドラを含み、イベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成される。
【０１０５】
いくつかの実施形態において、図６Ａのステップ６１２に示されたように、複数のイベント認識部のうちの少なくとも１つは、ジェスチャ定義及びジェスチャハンドラを有するジェスチャ認識部である。
【０１０６】
いくつかの実施形態において、図６Ａのステップ６１４に示されたように、イベント定義はユーザジェスチャを定義する。
【０１０７】
あるいは、イベント認識部はイベント認識状態の集合を有する（６１６）。これらのイベント認識状態は、少なくともイベント可能状態、イベント不可能状態及びイベント認識済状態を含んでもよい。
【０１０８】
いくつかの実施形態において、イベントハンドラは、イベント認識部がイベント可能状態になる場合に対象に配信するための対応する動作の準備を開始する（６１８）。図４Ａ及び図５Ａ〜図５Ｃの例に関連して上述したように、イベント認識部毎に実現された状態遷移マシンは、一般に状態イベント認識開始４０５等の初期状態を含む。イベント定義の初期部分を形成するサブイベントを受信することにより、イベント可能状態４１０への状態変化をトリガする。従って、いくつかの実施形態において、イベント認識部が状態イベント認識開始４０５から状態イベント可能４１０に遷移するのに伴い、イベント認識部のイベントハンドラは、イベントが正常に認識された後でイベント認識部の対象へ配信するための特定の動作を準備し始めてもよい。
【０１０９】
一方、いくつかの実施形態において、イベントハンドラは、イベント認識部が状態イベント不可能４２０になる場合に対応する動作の準備を終了してもよい（６２０）。いくつかの実施形態において、対応する動作を終了することは、イベントハンドラの対応する動作のあらゆる準備を取り消すことを含む。
【０１１０】
タップイベント認識部５９０が動作の準備を開始していてもよい（６１８）ため、図５Ｂの例は本実施形態とって有益である。しかし、フィンガー移動検出５３１−３サブイベントがタップイベント認識部５９０に配信されると、認識部５９０はイベント不可能状態５９８、５７８に遷移する。その時点で、タップイベント認識部５９０は、準備を開始した（６１８）動作の準備を終了してもよい（６２０）。
【０１１１】
いくつかの実施形態において、イベントハンドラは、イベント認識部がイベント認識済状態になる場合に対象に配信するための対応する動作の準備を完了する（６２２）。地図ビュー３０５に対して能動的に関与したイベント認識部によりダブルタップが認識されるため、図５Ｃの例は本実施形態を示す。それは、いくつかの実現例において、地図ビュー３０５により示された探索結果を選択し且つ／あるいは実行する義務があるイベントである。本明細書において、ダブルタップイベント認識部５７０がサブイベントシーケンス５４０から構成されるダブルタップイベントを正常に認識した後、地図ビュー３０５のイベントハンドラは、動作、すなわち起動コマンドを受信したことを示す動作の準備を完了する（６２２）。
【０１１２】
いくつかの実施形態において、イベントハンドラは、対応する動作をイベント認識部と関連付けられた対象に配信する（６２４）。引き続き図５Ｃの例を参照すると、準備された動作、すなわち地図ビュー３０５の起動コマンドは、地図ビュー３０５と関連付けられた特定の対象に配信される。これは、あらゆる適切なプログラムの方法又は目的であってもよい。
【０１１３】
あるいは、複数のイベント認識部は、１つ以上のサブイベントのシーケンスを並列に個別に処理してもよい（６２６）。
【０１１４】
いくつかの実施形態において、それぞれ、図３Ｂ及び図３Ｃの排他性フラグ３２４及び３６４に関連して上述したように、１つ以上のイベント認識部は排他的イベント認識部６２８として構成されてもよい。イベント認識部が排他的イベント認識部として構成される場合、イベント配信システムは、排他的イベント認識部がイベントを認識した後、ビュー階層で能動的に関与したビューに対する他のあらゆるイベント認識部（イベントを認識するイベント認識部の例外リスト３２６、３６６に列挙されたものを除く）が後続サブイベント（サブイベントの同一のシーケンスの）を受信するのを防止する。また、非排他的イベント認識部がイベントを認識する場合、イベント配信システムは、イベントを認識するイベント認識部の例外リスト３２６、３６６に列挙されたもの（もしあれば）を除き、ビュー階層で能動的に関与したビューに対するあらゆる排他的イベント認識部が後続サブイベントを受信するのを防止する。
【０１１５】
いくつかの実施形態において、それぞれ、図３Ｂ及び図３Ｃの排他性例外リスト３２６及び３６６に関連して上述したように、排他的イベント認識部はイベント例外リストを含んでもよい（６３０）。上記の図５Ｃの説明で示されたように、イベント認識部の排他性例外リストは、それぞれのイベント定義を構成するサブイベントのシーケンスが重複する場合でもイベント認識部がイベント認識を継続できるようにするために使用される。従って、いくつかの実施形態において、イベント例外リストは、対応するイベント定義が反復サブイベント、例えば図５Ｃのシンブルタップ／ダブルタップイベントの例を有するイベントを含む（６３２）。
【０１１６】
あるいは、イベント定義はユーザ入力動作を定義してもよい（６３４）。
【０１１７】
いくつかの実施形態において、１つ以上のイベント認識部は、イベントが認識されるまでサブイベントのシーケンスの全てのサブイベントを配信するのを遅延させるように構成されてもよい。
【０１１８】
方法６００は１つ以上のサブイベントのシーケンスを検出し（６３６）、いくつかの実施形態において、１つ以上のサブイベントのシーケンスは基本のタッチイベントを含んでもよい（６３８）。基本のタッチイベントは、タッチセンシティブ表面上のタッチに基づくジェスチャの基本構成要素、例えば最初のフィンガータッチダウン又はスタイラスタッチダウンに関連したデータ、タッチセンシティブ表面にわたる複数のフィンガー移動又はスタイラス移動の開始に関連したデータ、逆方向の２フィンガー移動、タッチセンシティブ表面からのスタイラスリフトオフ等を含んでもよいがそれらに限定されない。
【０１１９】
１つ以上のサブイベントのシーケンスのサブイベントは、特に、キー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウスの移動、マウスボタンの押下、マウスボタンの解放、ペンスタイラスのタッチ、ペンスタイラスの移動、ペンスタイラスの解放、音声命令、検出された眼球運動、生体情報認識入力及び検出されたユーザの生理学的変化を含むがそれらに限定されない多くの形態を含んでもよい。
【０１２０】
方法６００は、ビュー階層のビューのうちの１つをヒットビューとして識別する（６４０）。ヒットビューは、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにする。能動的に関与したビュー３０６が、タッチサブイベント３０１が地図ビュー３０５と関連付けられた領域に接触したために地図ビュー３０５及び探索結果パネル３０４を含む一例を図３Ａに示す。
【０１２１】
いくつかの実施形態において、ビュー階層内の第１の能動的に関与したビューは、その第１の能動的に関与したビューと関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成されてもよい（６４２）。この挙動により、図３Ｂ及び図３Ｃに関連して上述したスキップ特性（それぞれ、３３０及び３７０）を実現する。スキップ特性がイベント認識部に対して設定される場合、それぞれのサブイベントの配信は、ビュー階層で他の能動的に関与したビューと関連付けられたイベント認識部に対して依然として実行される。
【０１２２】
あるいは、ビュー階層内の第１の能動的に関与したビューは、第１の能動的に関与したビューがヒットビューでない限り、第１の能動的に関与したビューと関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成されてもよい（６４４）。この挙動により、図３Ｂ及び図３Ｃに関連して上述した条件付きスキップ特性（それぞれ、３３２及び３７２）を実現する。
【０１２３】
いくつかの実施形態において、ビュー階層内の第２の能動的に関与したビューは、第２の能動的に関与したビューと関連付けられたイベント認識部及び第２の能動的に関与したビューの祖先と関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成される（６４６）。この挙動により、図３Ｂ及び図３Ｃに関連して上述した停止特性（それぞれ、３２８及び３６８）を実現する。
【０１２４】
方法６００は、ビュー階層内で能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信する（６４８）。いくつかの実施形態において、ビュー階層で能動的に関与したビューに対するイベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。あるいは、ビュー階層で能動的に関与したビューに対するイベント認識部は、それぞれのサブイベントを処理しつつサブイベント認識を判断する。
【０１２５】
いくつかの実施形態において、ビュー階層で能動的に関与したビューに対するイベント認識部は、１つ以上のサブイベントのシーケンスを同時に処理してもよい（６５０）。あるいは、ビュー階層で能動的に関与したビューに対するイベント認識部は、１つ以上のサブイベントのシーケンスを並列に処理してもよい。
【０１２６】
いくつかの実施形態において、１つ以上のイベント認識部は、イベント認識部がイベントを認識するまでサブイベントのシーケンスの１つ以上のサブイベントを送出するのを遅延させるように構成されてもよい（６５２）。この挙動は遅延したイベントを反映する。例えば、複数のタップジェスチャが可能であるビューのシングルタップジェスチャを考える。その場合、タップイベントは「タップ＋遅延」認識部になる。本質的に、イベント認識部は、この挙動を実現する場合、サブイベントのシーケンスが実際にイベント定義に対応することを確定するまでイベント認識を遅延させる。受信側ビューが取り消されたイベントに適切に応答できない場合、この挙動は適切だろう。いくつかの実施形態において、イベント認識部は、サブイベントのシーケンスがイベント定義に対応しないことを確定するまで、イベント認識ステータスをそれぞれの能動的に関与したビューに更新するのを遅延させる。図３Ｂ及び図３Ｃに関連して上述したように、遅延タッチ開始済フラグ３２８、３６８、遅延タッチ終了フラグ３３０、３７０及びタッチ取消フラグ３３２、３７２は、サブイベント配信技術を調節するために提供され、イベント認識部及びビューステータス情報は特定のニーズに更新される。
【０１２７】
説明のために、特定の実施形態を参照して上記の説明を説明した。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及び実際的な応用例を最適に説明するために実施形態が選択され且つ説明されたことより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。
【図１Ａ】
0005594914.tif 000006
【図１Ｂ】
0005594914.tif 000007
【図２】
0005594914.tif 000008
【図３Ａ】
0005594914.tif 000009
【図３Ｂ】
0005594914.tif 000010
【図３Ｃ】
0005594914.tif 000011
【図４Ａ】
0005594914.tif 000012
【図４Ｂ】
0005594914.tif 000013
【図４Ｃ】
0005594914.tif 000014
【図５Ａ】
0005594914.tif 000015
【図５Ｂ】
0005594914.tif 000016
【図５Ｃ】
0005594914.tif 000017
【図６Ａ】
0005594914.tif 000018
【図６Ｂ】
0005594914.tif 000019