特許第6180563号(P6180563)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6180563
(24)【登録日】2017年7月28日
(45)【発行日】2017年8月16日
(54)【発明の名称】イベント認識
(51)【国際特許分類】
   G06F 3/041 20060101AFI20170807BHJP
   G06F 3/0488 20130101ALI20170807BHJP
【FI】
   G06F3/041 595
   G06F3/0488
【請求項の数】21
【外国語出願】
【全頁数】33
(21)【出願番号】特願2016-17396(P2016-17396)
(22)【出願日】2016年2月1日
(62)【分割の表示】特願2014-129689(P2014-129689)の分割
【原出願日】2010年3月12日
(65)【公開番号】特開2016-129029(P2016-129029A)
(43)【公開日】2016年7月14日
【審査請求日】2016年2月17日
(31)【優先権主張番号】61/210,332
(32)【優先日】2009年3月16日
(33)【優先権主張国】US
(31)【優先権主張番号】12/566,660
(32)【優先日】2009年9月24日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】ムーア, ブラッドフォード, アレン
(72)【発明者】
【氏名】シェーファー, ジョシュア, エイチ.
【審査官】 若林 治男
(56)【参考文献】
【文献】 米国特許第05612719(US,A)
【文献】 米国特許出願公開第2008/0316183(US,A1)
【文献】 特表2004−525675(JP,A)
【文献】 特表2008−508601(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/041
G06F 3/0488
G06F 3/01
(57)【特許請求の範囲】
【請求項1】
方法であって、
タッチセンシティブディスプレイを有するデバイスにて、
前記タッチセンシティブディスプレイに表示されたユーザインターフェースの領域に対応するビューの内部での、前記タッチセンシティブディスプレイ上の1以上のタッチを検出するステップと、
前記ビューの内部での1以上のタッチに対応するタッチサブイベントのシーケンスを得るステップと、
前記タッチサブイベントのシーケンスを、前記ビューに関連付けられた複数のジェスチャ認識部に供給するステップと、
ここで、前記複数のジェスチャ認識部は第1のジェスチャ認識部と第2のジェスチャ認識部を含む;
前記タッチサブイベントのシーケンスに基づくジェスチャの認識に関する前記第1のジェスチャ認識部の状態遷移を検出するステップと、
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
(1)前記第1のジェスチャ認識部の対応する状態の遷移に依存して前記第2のジェスチャ認識部のそれぞれの状態へ遷移させる、前記第1のジェスチャ認識部又は前記第2のジェスチャ認識部のメタデータに従って、及び、
(2)前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態へ遷移したこと判定されたことに従って、
記第2のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させるステップと、
を有することを特徴とする方法。
【請求項2】
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識が防止されたことを示す状態に遷移したと判定されたことに応じて、前記第2のジェスチャ認識部を前記タッチサブイベントのシーケンスに対応するジェスチャの認識を行えるようにするステップ
を有することを特徴とする請求項1に記載の方法。
【請求項3】
前記第1のジェスチャ認識部は、前記ビューへの前記タッチサブイベントのシーケンスの配信を、当該第1のジェスチャ認識部が前記タッチサブイベントのシーケンスの認識ができなくなってから行うように遅延することを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記タッチサブイベントは、或る期間にわたって前記複数のジェスチャ認識部へ供給され、
前記期間において、
前記タッチサブイベントのシーケンスが前記第1のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価し、
前記タッチサブイベントのシーケンスが前記第2のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価する
ことを特徴とする請求項1又は2に記載の方法。
【請求項5】
前記第1のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価は、前記第2のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価と同時に行われることを特徴とする請求項4に記載の方法。
【請求項6】
前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態に遷移したと判定されたことに従って、前記第1のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させるステップを含むことを特徴とする請求項1乃至5のいずれか1項に記載の方法。
【請求項7】
前記第2のジェスチャ認識部は1以上のジェスチャ認識部のリストに関連づけられていて、当該1以上のジェスチャ認識部のリストは前記第1のジェスチャ認識部を含むことを特徴とする請求項1乃至6のいずれか1項に記載の方法。
【請求項8】
電子デバイスであって、
タッチセンシティブディスプレイと、
1以上のプロセッサと、
1以上のプログラムを格納するメモリとを有し、
前記1以上のプロセッサがプログラムを実行したとき、前記電子デバイスに、
前記タッチセンシティブディスプレイに表示されたユーザインターフェースの領域に対応するビューの内部での、前記タッチセンシティブディスプレイ上の1以上のタッチを検出させ、
前記ビューの内部での1以上のタッチに対応するタッチサブイベントのシーケンスを得させ、
前記タッチサブイベントのシーケンスを、前記ビューに関連付けられた複数のジェスチャ認識部に供給させ、
ここで、前記複数のジェスチャ認識部は第1のジェスチャ認識部と第2のジェスチャ認識部を含む;
前記タッチサブイベントのシーケンスに基づくジェスチャの認識に関する前記第1のジェスチャ認識部の状態遷移を検出するステップと、
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
(1)前記第1のジェスチャ認識部の対応する状態の遷移に依存して前記第2のジェスチャ認識部のそれぞれの状態へ遷移させる、前記第1のジェスチャ認識部又は前記第2のジェスチャ認識部のメタデータに従って、及び、
(2)前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態へ遷移したこと判定されたことに従って、
記第2のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させ、
ことを特徴とする電子デバイス。
【請求項9】
前記1以上のプログラムは、前記1以上のプロセッサによって実行されたとき、前記電子デバイスに、
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識が防止されたことを示す状態に遷移したと判定されたことに応じて、前記第2のジェスチャ認識部を前記タッチサブイベントのシーケンスに対応するジェスチャの認識を行えるようにする
ことを特徴とする請求項8に記載の電子デバイス。
【請求項10】
前記第1のジェスチャ認識部は、前記ビューへの前記タッチサブイベントのシーケンスの配信を、当該第1のジェスチャ認識部が前記タッチサブイベントのシーケンスの認識ができなくなってから行うように遅延することを特徴とする請求項8又は9に記載の電子デバイス。
【請求項11】
前記タッチサブイベントは、或る期間にわたって前記複数のジェスチャ認識部へ供給され、
前記期間において、
前記タッチサブイベントのシーケンスが前記第1のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価し、
前記タッチサブイベントのシーケンスが前記第2のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価する
ことを特徴とする請求項8又は9に記載の電子デバイス。
【請求項12】
前記第1のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価は、前記第2のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価と同時に行われることを特徴とする請求項11に記載の電子デバイス。
【請求項13】
前記1以上のプログラムは、前記1以上のプロセッサによって実行されたとき、前記電子デバイスに、
前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態に遷移したと判定されたことに従って、前記第1のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させることを特徴とする請求項8乃至12のいずれか1項に記載の電子デバイス。
【請求項14】
前記第2のジェスチャ認識部は1以上のジェスチャ認識部のリストに関連づけられていて、当該1以上のジェスチャ認識部のリストは前記第1のジェスチャ認識部を含むことを特徴とする請求項8乃至13のいずれか1項に記載の電子デバイス。
【請求項15】
タッチセンシティブディスプレイを有する電子デバイスにおける1以上のプロセッサによって実行される、1以上のプログラムを格納したコンピュータ可読記憶媒体であって、
前記1以上のプログラムは、前記電子デバイスの前記1以上のプロセッサにより実行されたときに、前記電子デバイスに、
前記タッチセンシティブディスプレイに表示されたユーザインターフェースの領域に対応するビューの内部での、前記タッチセンシティブディスプレイ上の1以上のタッチを検出させ、
前記ビューの内部での1以上のタッチに対応するタッチサブイベントのシーケンスを得させ、
前記タッチサブイベントのシーケンスを、前記ビューに関連付けられた複数のジェスチャ認識部に供給させ、
ここで、前記複数のジェスチャ認識部は第1のジェスチャ認識部と第2のジェスチャ認識部を含む;
前記タッチサブイベントのシーケンスに基づくジェスチャの認識に関する前記第1のジェスチャ認識部の状態遷移を検出させ、
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
(1)前記第1のジェスチャ認識部の対応する状態の遷移に依存して前記第2のジェスチャ認識部のそれぞれの状態へ遷移させる、前記第1のジェスチャ認識部又は前記第2のジェスチャ認識部のメタデータに従って、及び、
(2)前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態へ遷移したこと判定されたことに従って、
記第2のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させる
ための命令を有することを特徴とするコンピュータ可読記憶媒体。
【請求項16】
前記1以上のプログラムは、前記1以上のプロセッサによって実行されたとき、前記電子デバイスに、
前記第1のジェスチャ認識部の状態遷移の検出に応じて、
前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識が防止されたことを示す状態に遷移したと判定されたことに応じて、前記第2のジェスチャ認識部を前記タッチサブイベントのシーケンスに対応するジェスチャの認識を行えるようにする
ことを特徴とする請求項15に記載のコンピュータ可読記憶媒体。
【請求項17】
前記第1のジェスチャ認識部は、前記ビューへの前記タッチサブイベントのシーケンスの配信を、当該第1のジェスチャ認識部が前記タッチサブイベントのシーケンスの認識ができなくなってから行うように遅延することを特徴とする請求項15又は16に記載のコンピュータ可読記憶媒体。
【請求項18】
前記タッチサブイベントは、或る期間にわたって前記複数のジェスチャ認識部へ供給され、
前記期間において、
前記タッチサブイベントのシーケンスが前記第1のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第1のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価し、
前記タッチサブイベントのシーケンスが前記第2のジェスチャ認識部のジェスチャ認識の基準に適合するか否かを判定するため、前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスを評価する
ことを特徴とする請求項15又は16に記載のコンピュータ可読記憶媒体。
【請求項19】
前記第1のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価は、前記第2のジェスチャ認識部による前記タッチサブイベントのシーケンスの前記評価と同時に行われることを特徴とする請求項18に記載のコンピュータ可読記憶媒体。
【請求項20】
前記1以上のプログラムは、前記1以上のプロセッサによって実行されたとき、前記電子デバイスに、
前記第2のジェスチャ認識部が前記タッチサブイベントのシーケンスに対応するジェスチャの認識完了の状態に遷移したと判定されたことに従って、前記第1のジェスチャ認識部に対し、前記タッチサブイベントのシーケンスに対応するジェスチャの認識を防止する状態へ遷移させることを特徴とする請求項15乃至19のいずれか1項に記載のコンピュータ可読記憶媒体。
【請求項21】
前記第2のジェスチャ認識部は1以上のジェスチャ認識部のリストに関連づけられていて、当該1以上のジェスチャ認識部のリストは前記第1のジェスチャ認識部を含むことを特徴とする請求項15乃至20のいずれか1項に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にユーザインタフェース処理に関する。本発明は、特に、ユーザインタフェースイベントを認識する装置及び方法に関する。
【背景技術】
【0002】
一般に演算装置(computing device)は、演算装置と対話するために使用されるユーザインタフェースを含む。ユーザインタフェースは、ユーザインタフェースの種々の態様と対話するキーボード、マウス、並びにタッチセンシティブ表面等のディスプレイ及び/又は入力デバイスを含んでもよい。入力デバイスとしてタッチセンシティブ表面を備える幾つかのデバイスにおいて、タッチに基づくジェスチャの第1の集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプ、ピンチ、非ピンチ、2本指スワイプのうちの2つ以上)は、特定の状況(例えば、第1のアプリケーションの特定のモード)で適切な入力として認識され、タッチに基づくジェスチャの他の異なる集合は、他の状況(例えば、第1のアプリケーション内の異なるアプリケーション及び/あるいは異なるモード又は状況)で適切な入力として認識される。その結果、タッチに基づくジェスチャを認識し且つそれに応答するのに必要なソフトウェア及び論理は、複雑になり、アプリケーションが更新される度に又は新しいアプリケーションが演算装置に追加される度に改訂が必要となる。これらの同様の問題は、タッチに基づくジェスチャ以外の入力源を利用するユーザインタフェースにおいて生じる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従って、タッチに基づくジェスチャ及びイベント、並びに他の入力源からのジェスチャ及びイベントを認識する総合的な枠組み又は機構を有するのが望ましい。総合的な枠組み又は機構は、演算装置上の全てのアプリケーションプログラムのほぼ全ての状況又はモードに容易に適応可能であり、アプリケーションが更新される場合、あるいは新しいアプリケーションが演算装置に追加される場合でも殆ど又は全く改訂を必要としない。
【課題を解決するための手段】
【0004】
上述の欠点に対処するために、いくつかの実施形態は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成された電子デバイスにおいて、ビュー階層の1つ以上のビューを表示し、各々が1つ以上のイベント認識部を含む特定のビューと各々が関連付けられる1つ以上のソフトウェア要素を実行する方法を提供する。各イベント認識部は、1つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。更に方法は、1つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの1つを識別する。方法は、ビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に更に配信し、ビュー階層で能動的に関与したビューに対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【0005】
いくつかの実施形態は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成された電子デバイスにおいて、ビュー階層の1つ以上のビューを表示し、各々が1つ以上のイベント認識部を含む特定のビューと各々が関連付けられる1つ以上のソフトウェア要素を実行する方法を提供する。各イベント認識部は、1つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。更に方法は、1つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの1つを識別する。更に方法は、ビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信し、ビュー階層で能動的に関与したビューに対するイベント認識部において、それぞれのサブイベントを処理しつつサブイベント認識を判断する。
【0006】
いくつかの実施形態は、コンピュータシステム又はコンピュータデバイスの1つ以上のプロセッサにより実行される複数のビューを有するビュー階層の1つ以上のビューを表示する1つ以上のアプリケーションプログラムを含む1つ以上のプログラムを格納するコンピュータ可読記憶媒体を提供する。1つ以上のアプリケーションプログラムは、各々が1つ以上のイベント認識部を含む特定のビューと各々が関連付けられる1つ以上のソフトウェア要素含む。各イベント認識部は、1つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有し、イベント管理命令は、コンピュータシステム又はコンピュータデバイスの1つ以上のプロセッサにより実行される場合にコンピュータシステム又はコンピュータデバイスが、1つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの1つを識別し、且つビュー階層内の能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信するようにし、ビュー階層で能動的に関与したビューに対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【0007】
いくつかの実施形態は、ディスプレイと、1つ以上のプロセッサと、メモリと、複数のビューを有するビュー階層の1つ以上のビューを表示するように構成されるメモリに格納された1つ以上のプログラムとを備える装置を提供する。1つ以上のプログラムは、各々が1つ以上のイベント認識部を含む特定のビューと各々が関連付けられる1つ以上のソフトウェア要素含む。イベント認識部は、1つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。装置のプログラムは、装置の1つ以上のプロセッサにより実行される場合に装置が1つ以上のサブイベントのシーケンスを検出し、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにするヒットビューとしてビュー階層のビューのうちの1つを識別し、且つビュー階層内の能動的に関与したビューに対するイベント認識部がそれぞれのサブイベントを処理する間にサブイベント認識を判断させるイベント配信プログラムを更に含む。
【0008】
いくつかの実施形態において、1つ以上のプロセッサと、メモリと、複数のプログラム層を有するプログラム階層の1つ以上のプログラム層の実行を管理するように構成されるメモリに格納された1つ以上のプログラムとを備える装置が提供される。1つ以上のプログラムは、各々が1つ以上のイベント認識部を含む特定のプログラム層と各々が関連付けられる1つ以上のソフトウェア要素含む。イベント認識部は、1つ以上のサブイベントに基づくイベント定義と、対象に対する動作を規定し、且つイベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成されるイベントハンドラとを有する。装置は、装置の1つ以上のプロセッサにより実行される場合に装置が1つ以上のサブイベントのシーケンスを検出し、プログラム階層のどのプログラム層が能動的に関与したプログラム層であるかを明らかにするヒット層としてプログラム階層のプログラム層のうちの1つを識別し、且つプログラム階層内の能動的に関与したプログラム層毎にそれぞれのサブイベントをイベント認識部に配信させるイベント配信プログラムを更に含み、プログラム階層で能動的に関与したプログラム層に対する各イベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。
【図面の簡単な説明】
【0009】
図1A】、
図1B図1A及び図1Bは、いくつかの実施形態に係る電子デバイスを示すブロック図である。
図2図2は、いくつかの実施形態に係る例示的な電子デバイスの入出力処理スタックを示す図である。
図3A図3Aは、いくつかの実施形態に係る例示的なビュー階層を示す図である。
図3B】、
図3C図3B及び図3Cは、いくつかの実施形態に係る例示的なイベント認識部の方法及びデータ構造を示すブロック図である。
図4A】、
図4B図4A及び図4Bは、いくつかの実施形態に係る例示的な状態遷移マシンを示すフローチャートである。
図4C図4Cは、いくつかの実施形態に係る例示的なサブイベントの集合に対する図4A及び図4Bの例示的な状態遷移マシンを示す図である。
図5A】、
図5B】、
図5C図5A図5Cは、いくつかの実施形態に係る例示的なイベント認識部状態遷移マシンを含む例示的なイベントシーケンスを示す図である。
図6A】、
図6B図6A及び図6Bは、いくつかの実施形態に係るイベント認識方法を示すフローチャートである。
【発明を実施するための形態】
【0010】
図中、同一の図中符号は対応する部分を示す。
【0011】
次に、添付の図面で例が示される実施形態を詳細に参照する。以下の詳細な説明において、本発明を完璧に理解するために多くの特定の詳細を説明する。しかし、本発明がこれらの特定の詳細を用いずに実施されてもよいことは、当業者には明らかとなるだろう。他の例において、既知の方法、手順(プロシージャ)、構成要素、回路及びネットワークは、実施形態の態様を不必要に不明瞭にしないように詳細に説明されていない。
【0012】
第1及び第2等の用語が種々の要素を説明するために本明細書で使用されてもよいが、これらの要素がこれらの用語により限定されるべきではないことは、更に理解されるだろう。これらの用語は、ある要素を別の要素と区別するためだけに使用される。例えば、本発明の範囲から逸脱せずに、第1の接触は第2の接触と呼ばれてもよく、同様に第2の接触は第1の接触と呼ばれてもよい。第1の接触及び第2の接触は、共に接触であるが同一の接触ではない。
【0013】
本明細書の本発明の説明で使用される専門用語は、特定の実施形態を説明するためだけのものであり、本発明を限定することを意図しない。本発明及び添付の請求の範囲の説明で使用されるように、特に指示のない限り、単数形は複数形も含むことを意図する。本明細書で使用されるような「及び/又は」という用語は、関連付けられ且つ列挙された項目のうちの1つ以上のいずれか又は全ての組合せを示し且つ含むことが更に理解されるだろう。本明細書で使用される場合の用語「備える」は、記載される特徴、数字、ステップ、動作、要素及び/又は構成要素の存在を特定するが、1つ以上の他の特徴、数字、ステップ、動作、要素、構成要素及び/又はそれらの集合の存在又は追加を除外しないことが更に理解されるだろう。
【0014】
本明細書で使用されるように、「場合」という用語は、状況に依存して「際」、「すると」、「判定することに応答して」又は「検出することに応答して」を意味するものとして解釈されてもよい。同様に、「それが判定される場合」又は「[示された条件又はイベント]が検出される場合」という表現は、状況に依存して「判定すると」、「判定することに応答して」、「(示された条件又はイベント)を検出すると」又は「(示された条件又はイベント)を検出することに応答して」を意味するものとして解釈されてもよい。
【0015】
上述したように、入力デバイスとしてタッチセンシティブ表面を備えるいくつかのデバイスにおいて、タッチに基づくジェスチャの第1の集合(例えば、タップ、ダブルタップ、横スワイプ、縦スワイプのうちの2つ以上)は、特定の状況(例えば、第1のアプリケーションの特定のモード)で適切な入力として認識され、タッチに基づくジェスチャの他の異なる集合は、他の状況(例えば、第1のアプリケーション内の異なるアプリケーション及び/あるいは異なるモード又は状況)で適切な入力として認識される。その結果、タッチに基づくジェスチャを認識し且つそれに応答するのに必要なソフトウェア及び論理は、複雑になり、アプリケーションが更新される度に又は新しいアプリケーションが演算装置に追加される度に改訂が必要となる。
【0016】
以下に説明する実施形態において、タッチに基づくジェスチャはイベントである。事前定義されたイベント、例えばアプリケーションの現在の状況での適切な入力に応答するイベントを認識すると、イベントに関する情報はアプリケーションに配信される。本明細書の説明において、全てのタッチに基づくジェスチャはイベントに対応する。また、各イベントはサブイベントのシーケンスとして定義される。マルチタッチ表示装置(本明細書では「画面」と呼ばれることが多い)又は他のマルチタッチセンシティブ表面を有し、且つマルチタッチに基づくジェスチャを受け入れるデバイスにおいて、マルチタッチに基づくイベントを定義するサブイベントは、マルチタッチサブイベント(2本以上の指がデバイスのタッチセンシティブ表面に同時に接触することを必要とする)を含んでもよい。例えば、マルチタッチセンシティブディスプレイを有するデバイスにおいて、サブイベントのマルチタッチシーケンスの各々は、ユーザの指が最初に画面に触れる際に開始してもよい。1つ以上の更なる指が後続して又は同時に画面に触れる際に更なるサブイベントが発生してもよく、画面に触れている全ての指が画面にわたり移動する際に更に他のサブイベントが発生してもよい。ユーザの指が最後に画面から離れた時にシーケンスは終了する。
【0017】
タッチセンシティブ表面を有するデバイスにおいて実行するアプリケーションを制御するためにタッチに基づくジェスチャを使用する場合、タッチは時間的側面及び空間的側面の双方を有する。段階と呼ばれる時間的側面には、タッチがちょうど開始した時、タッチが移動しているかあるいは静止しているか及びタッチが終了する時、すなわち指が画面から離れる時がある。タッチの空間的側面は、タッチが発生するビューの集合(set)又はユーザインタフェースウィンドウの集合である。タッチが検出されるビュー又はウィンドウは、プログラム階層又はビュー階層内のプログラムレベルに対応してもよい。例えば、タッチが検出される最低レベルのビューはヒットビューと呼ばれてもよく、適切な入力として認識されるイベントの集合は、タッチに基づくジェスチャを開始する初期タッチのヒットビューに少なくとも部分的に基づいて判定されてもよい。
【0018】
図1A及び図1Bは、いくつかの実施形態に係る電子デバイス102及び104を示すブロック図である。電子デバイス102及び104は、デスクトップコンピュータシステム、ラップトップコンピュータシステム、移動電話、スマートフォン、パーソナルデジタルアシスタント又はナビゲーションシステムを含むがそれに限定されないあらゆる電子デバイスであってもよい。更に電子デバイスは、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイ(例えば、図1Bのディスプレイ156)を備えたポータブル電子デバイス、ユーザインタフェースを示すように構成されたタッチスクリーンディスプレイを備えたコンピュータ、タッチセンシティブ表面を備えたコンピュータ及びユーザインタフェースを示すように構成されたディスプレイ、あるいはコンシューマ電子デバイス、移動電話、テレビゲームシステム、電子音楽プレーヤ、タブレットPC、電子書籍読取りシステム、電子書籍、PDA、電子手帳、電子メールデバイス、ラップトップコンピュータ又は他のコンピュータ、キオスクコンピュータ、自動販売機、スマート家電等を含むがそれらに限定されない他のあらゆる形態の演算装置であってもよい。電子デバイス102及び104は、それぞれ、ユーザインタフェース113−A及び113−Bを含んでもよい。
【0019】
いくつかの実施形態において、電子デバイス102及び104はタッチスクリーンディスプレイを含む。これらの実施形態において、ユーザインタフェース113(すなわち、113−A又は113−B)は、電子デバイス102及び104と対話するためにユーザにより使用されるオンスクリーンキーボード(不図示)を含んでもよい。あるいは、キーボードは、電子デバイス102及び104から独立し且つそれらとは別個であってもよい。例えばキーボードは、電子デバイス102又は104に結合された有線又は無線のキーボードであってもよい。
【0020】
いくつかの実施形態において、電子デバイス102は、電子デバイス102に結合されるディスプレイ126及び1つ以上の入力デバイス128−A(例えば、キーボード、マウス、トラックボール、マイク、物理ボタン、タッチパッド等)を含む。これらの実施形態において、入力デバイス128−Aのうちの1つ以上は、オプションとして電子デバイス102から独立し且つそれとは別個であってもよい。例えば1つ以上の入力デバイスは、キーボード、マウス、トラックパッド、トラックボール及び電子ペンのうちの1つ以上を含んでもよく、それらのうちのいずれかは、オプションとして電子デバイスから独立してもよい。オプションとして、デバイス102又は104は、1つ以上のセンサ130、例えば1つ以上の加速度計、ジャイロスコープ、GPSシステム、スピーカ、赤外線(IR)センサ、生体情報認識センサ、カメラ等を含んでもよい。尚、入力デバイス128又はセンサ130等の種々の例示的なデバイスの上記の説明は、本明細書で説明する実施形態の動作に対して全く重要ではなく、入力デバイスとして本明細書で説明されるあらゆる入力デバイス又はセンサ装置は、センサとしても適切に説明されてもよく、逆も同様である。いくつかの実施形態において、1つ以上のセンサ130により生成された信号は、イベントを検出するために入力源として使用される。
【0021】
いくつかの実施形態において、電子デバイス104は、電子デバイス104に結合されるタッチセンシティブディスプレイ156(すなわち、タッチセンシティブ表面を有するディスプレイ)及び1つ以上の入力デバイス128−Bを含む。いくつかの実施形態において、タッチセンシティブディスプレイ156は、2つ以上の別個の同時の(又は部分的に同時の)タッチを検出する機能を有し、これらの実施形態において、ディスプレイ156は、本明細書でマルチタッチディスプレイ又はマルチタッチセンシティブディスプレイと呼ばれることもある。
【0022】
本明細書で説明される電子デバイス102又は104のいくつかの実施形態において、入力デバイス128は電子デバイス102又は104に配設される。他の実施形態において、入力デバイス128のうちの1つ以上は、電子デバイス102又は104から独立し且つそれとは別個である。例えば、入力デバイス128のうちの1つ以上は、ケーブル(例えば、USBケーブル)、あるいは無線接続(例えば、Bluetooth(登録商標)接続)により電子デバイス102又は104に結合されてもよい。
【0023】
それぞれ、入力デバイス128を使用する場合、あるいは電子デバイス102又は104のタッチセンシティブディスプレイ156上でタッチに基づくジェスチャを実行する場合、ユーザは、電子デバイス102又は104の1つ以上のCPU110により処理されるサブイベントのシーケンスを生成する。いくつかの実施形態において、電子デバイス102又は104の1つ以上のCPU110は、イベントを認識するようにサブイベントのシーケンスを処理する。
【0024】
一般に電子デバイス102又は104は、それぞれ、1つ以上のシングルコア処理ユニット又はマルチコア処理ユニット(1つ又は複数の「CPU」)110及び1つ以上のネットワーク、あるいは他の通信インタフェース112を含む。電子デバイス102又は104は、それぞれ、メモリ111及びこれらの構成要素を相互接続する1つ以上の通信バス115を含む。通信バス115は、システム構成要素(本明細書では不図示)間の通信を相互接続し且つ制御する回路網(チップセットと呼ばれることもある)を含んでもよい。簡単に上述したように、電子デバイス102及び104は、それぞれ、ディスプレイ126及びマルチタッチディスプレイ156を含むユーザインタフェース113をオプションとして含む。また、一般に電子デバイス102及び104は、入力デバイス128(例えば、キーボード、マウス、タッチスクリーン、タッチセンシティブ表面、マルチタッチスクリーン、キーパッド等)を含む。いくつかの実施形態において、入力デバイスは、オンスクリーン入力デバイス(例えば、表示装置のタッチセンシティブ表面)を含む。メモリ111は、DRAM、SRAM、DDR RAM又は他のランダムアクセス固体メモリ素子等の高速ランダムアクセスメモリを含んでもよく、1つ以上の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリ素子又は他の不揮発性固体記憶装置等の不揮発性メモリを含んでもよい。メモリ111は、オプションとしてCPU110からリモートで配置された1つ以上の記憶装置を含んでもよい。メモリ111又はメモリ111内の不揮発性メモリ素子は、コンピュータ可読記憶媒体を含む。いくつかの実施形態において、メモリ111は、以下のプログラム、モジュール及びデータ構造又はそれらの部分集合を格納する:
・種々の基本システムサービスを処理し且つハードウェア依存タスクを実行する手順を含むオペレーティングシステム118;
・電子デバイス102又は104を、それぞれ、1つ以上のそれぞれの通信インタフェース112(有線又は無線)、並びに1つ以上の通信ネットワーク、例えばインターネット、他のワイドエリアネットワーク、ローカルエリアネットワーク及びメトロポリタンエリアネットワーク等を介して他のデバイスに接続するために使用される通信モジュール120(電子デバイス102及び104のそれぞれにおける);
・オペレーティングシステム118内の種々の別の実施形態において又はアプリケーションソフトウェア124で実現されてもよいイベント配信システム122(電子デバイス102及び104のそれぞれにおける);しかし、いくつかの実施形態において、イベント配信システム122のいくつかの態様はオペレーティングシステム118において実現されてもよく、他の態様はアプリケーションソフトウェア124で実現される。
・それぞれ、アプリケーションソフトウェア124の1つ以上のアプリケーション(例えば、電子メールアプリケーション、ウェブブラウザアプリケーション、テキストメッセージングアプリケーション等)。
【0025】
上記の識別された要素の各々は、上述のメモリ素子のうちの1つ以上に格納されてもよく、本明細書で説明する機能を実行する命令の集合に対応する。命令の集合は、1つ以上のプロセッサ(例えば、1つ以上のCPU110)により実行される。先に識別されたモジュール又はプログラム(すなわち、命令の集合)が別個のソフトウェアプログラム、手順又はモジュールとして実現される必要はないため、これらのモジュールの種々の部分集合は、種々の実施形態において組み合わされてもよくあるいは再配置されてもよい。いくつかの実施形態において、メモリ111は、先に識別されたモジュール及びデータ構造の部分集合を格納してもよい。更にメモリ111は、上述されていない更なるモジュール及びデータ構造を格納してもよい。
【0026】
図2は、本発明のいくつかの実施形態に係る例示的な電子デバイス又は電子装置(例えば、デバイス102又は104)の入出力処理スタック200を示す図である。デバイスのハードウェア(例えば、電子回路網)212は、入出力処理スタック200のベースレベルにある。ハードウェア212は、図1A及び/又は図1bに示された構成要素等の種々のハードウェアインタフェース構成要素を含む。ハードウェア212は、上述のセンサ130のうちの1つ以上を更に含む。入出力処理スタック200の他の全ての要素(202〜210)は、ハードウェア212から受信した入力を処理し且つハードウェアユーザインタフェース(例えば、ディスプレイ、スピーカ、デバイス振動アクチュエータ)を介して示される種々の出力を生成するソフトウェア手順又はソフトウェア手順の一部である。
【0027】
ドライバ、又はドライバ210の集合は、ハードウェア212と通信する。ドライバ210は、ハードウェア212から入力データを受信し、受信した入力データを処理する。コアオペレーティングシステム(「OS」)208はドライバ210と通信する。コアOS208は、ドライバ210から受信した生の入力データを処理する。いくつかの実施形態において、ドライバ210はコアOS208の一部であると考えられてもよい。
【0028】
OSアプリケーションプログラミングインタフェース(「OS API)」206の集合は、コアOS208と通信するソフトウェアプロシージャである。いくつかの実施形態において、API206は、デバイスのオペレーティングシステムに含まれるが、コアOS208の上のレベルにある。API206は、本明細書で説明する電子デバイス又は電子装置上で実行するアプリケーションにより使用されるように設計される。ユーザインタフェース(UI)API204はOS API206を利用する。デバイス上で実行するアプリケーションソフトウェア(「アプリケーション」)202は、ユーザと通信するためにUI API204を利用する。その結果、UI API204は、より低いレベルの要素と通信し、マルチタッチディスプレイ156等の種々のユーザインタフェースハードウェアと最終的に通信する。
【0029】
入出力処理スタック200の各層は、必ずしも必要とされない入出力処理スタック200の下の層を利用する。例えば、いくつかの実施形態において、アプリケーション202はOS API206と通信することもある。一般にOS API層206以上の層は、専用であると考えられるため、コアOS208、ドライバ210又はハードウェア212に直接アクセスしなくてもよい。アプリケーション層202及びUI API204は、通常、OS API206に対して直接呼び出すことにより、コアOS208、ドライバ210及びハードウェア212の層にアクセスする。
【0030】
別の方法で示すと、電子デバイス102又は104の1つ以上のハードウェア要素212、並びにドライバ210(図2に示された)、コアOS(オペレーティングシステム)208(図2に示された)、オペレーティングシステムAPIソフトウェア206(図2に示された)及びアプリケーション・ユーザインタフェースAPIソフトウェア204(図2に示された)等のデバイス上で実行するソフトウェアは、入力デバイス128のうちの1つ以上及び/又はタッチセンシティブディスプレイ156で入力イベント(ジェスチャのサブイベントに対応してもよい)を検出し、入力イベントがアプリケーション202に配信されるインベントに対応するか及びいつ対応するかを判定するために現在アクティブイベント認識部の集合により使用された種々のデータ構造(デバイス102又は104のメモリに格納された)を生成又は更新する。イベント認識の技法、装置及びコンピュータプログラムを以下に更に詳細に説明する。
【0031】
図3Aは、本例では最も外側のビュー302に表示された探索プログラムである例示的なビュー階層300を示す。最も外側のビュー302は、一般に、ユーザが直接対話するユーザインタフェース全体を含み、例えば以下のような従属ビュー(subordinate view)を含む。
・探索結果をグループ化し且つ縦方向にスクロールされる探索結果パネル304
・文字入力を受け入れる探索フィールド306
・迅速にアクセスするためにアプリケーションをグループ化するホームキー列310
【0032】
本例において、各従属ビューは下位レベルの従属ビューを含む。他の例において、階層300におけるビューレベルの数は、階層の種々の分岐で異なってもよく、1つ以上の従属ビューは下位レベルの従属ビューを有し、1つ以上の他の従属ビューはそのような下位レベルの従属ビューを全く有さない。引き続き図3Aに示された例を参照すると、探索結果パネル304は、探索結果毎に別個の従属ビュー305(パネル304に従属する)を含む。本明細書において、この例は、地図ビュー305と呼ばれた従属ビューにおいて1つの探索結果を示す。探索フィールド306は、本明細書でクリアコンテンツアイコンビュー307と呼ばれる従属ビューを含む。クリアコンテンツアイコンビュー307は、ユーザがビューのクリアコンテンツアイコン307上で特定の動作(例えば、シングルタッチジェスチャ又はシングルタップジェスチャ)を実行する場合に探索フィールドのコンテンツをクリアする。ホームキー列310は、それぞれ、連絡先アプリケーション、電子メールアプリケーション、ウェブブラウザ及びiPodミュージックインタフェースに対応する従属ビュー310−1、310−2、310−3及び310−4を含む。
【0033】
タッチサブイベント301−1は最も外側のビュー302に示される。探索結果パネル304及び地図ビュー305の双方の上にタッチサブイベント301−1の場所が与えられたとすると、タッチサブイベントは、それぞれ、301−2及び301−3としてこれらのビュー上に更に示される。タッチサブイベントの能動的に関与したビューは、ビュー探索結果パネル304、地図ビュー305及び最も外側のビュー302を含む。図3B及び図3Cを参照して、サブイベント配信及び能動的に関与したビューに関する更なる情報を以下に提供する。
【0034】
ビュー(及び対応するプログラムレベル)はネストされる。換言すると、ビューは他のビューを含むことができる。その結果、第1のビューと関連付けられたソフトウェア要素(例えば、イベント認識部)は、第1のビュー内のビューと関連付けられた1つ以上のソフトウェア要素を含むか、あるいはそれにリンクされる。アプリケーションと関連付けられるビューもあれば、高レベルのOS要素、例えばグラフィカルユーザインタフェース、ウィンドウマネージャ等と関連付けられるビューもある。
【0035】
後続の説明を簡略化するために、一般にビュー及びビュー階層のみを参照するが、いくつかの実施形態において、方法は、複数のプログラム層を有するプログラム階層及び/又はビュー階層で動作してもよいことが理解されるべきである。
【0036】
図3B及び図3Cは、イベント認識部に関連した例示的な方法及び構造を示す。図3Bは、イベントハンドラがビューの階層内の特定のビューと関連付けられる場合のイベント処理の方法及びデータ構造を示す。図3Cは、イベントハンドラがプログラムレベルの階層内の特定のレベルと関連付けられる場合のイベント処理の方法及びデータ構造を示す。イベント認識部の包括的方法312及び350は、それぞれ、ヒットビュー判定モジュール314及びヒットレベル判定モジュール352、アクティブイベント認識部判定モジュール316及び354、並びにサブイベント配信モジュール318及び356を含む。
【0037】
ヒットビュー判定モジュール314及びヒットレベル判定モジュール352は、それぞれ、1つ以上のビュー、例えば3つの主な分岐を有する図3Aに示された例示的なビュー階層300内でサブイベントが発生した場所を判定するソフトウェアプロシージャを提供する。
【0038】
図3Bのヒットビュー判定モジュール314は、最も外側のビュー302、探索結果(地図ビュー305)及び探索結果パネルビュー304上に301−1として示されたユーザタッチ等のサブイベントに関連した情報を受信する。ヒットビュー判定モジュール314は、サブイベントを処理すべき階層における最低ビューとしてヒットビューを識別する。殆どの状況において、ヒットビューは、初期サブイベント(すなわち、イベント又は潜在的なイベントを形成するサブイベントのシーケンスの第1のサブイベント)が発生する最低レベルのビューである。ヒットビューは、識別されると、ヒットビューが識別された同一のタッチ又は入力源に関連した全てのサブイベントを受信する。
【0039】
いくつかの実施形態において、図3Cのヒットレベル判定モジュール352は、類似の処理を利用してもよい。
【0040】
イベント認識部の包括的方法312及び350のアクティブイベント認識部判定モジュール316及び354は、それぞれ、ビュー階層内の1つ又は複数のビューがサブイベントの特定のシーケンスを受信すべきかを判定する。図3Aは、サブイベント301を受信する例示的な活動中のビュー302、304及び305の集合を示す。図3Aの例において、アクティブイベント認識部判定モジュール304は、最高レベルのビュー302、探索結果パネル304及び地図ビュー305がサブイベント301により示されたタッチの物理的位置を含むため、これらのビューが能動的に関与したビューであると判定するだろう。尚、タッチサブイベント301が地図ビュー305と関連付けられたエリアに全体的に限定されたとしても、探索結果パネル304及び最高レベルのビュー302は、地図ビュー305の祖先であるため、能動的に関与したビューに依然として存在するだろう。
【0041】
いくつかの実施形態において、アクティブイベント認識部判定モジュール316及び354は、類似の処理を利用する。
【0042】
サブイベント配信モジュール318は、能動的に関与したビューに対するイベント認識部にサブイベントを配信する。図3Aの例を使用して、タッチマーク301−1、301−2及び301−3によりユーザのタッチを階層の種々のビューに示す。いくつかの実施形態において、このユーザのタッチを示すサブイベントデータは、能動的に関与したビュー、すなわち最高レベルのビュー302、探索結果パネル304及び地図ビュー305において、サブイベント配信モジュール318によりイベント認識部に配信される。また、ビューのイベント認識部は、ビュー内で開始するイベントの後続サブイベントを受信する(例えば、初期サブイベントがビュー内で発生する場合)。別の方法で示すと、ビューは、ビューの外側で継続する場合でも、ビューで開始するユーザ対話と関連付けられたサブイベントを受信する。
【0043】
いくつかの実施形態において、サブイベント配信モジュール356は、サブイベント配信モジュール318により使用された処理に類似する処理において、能動的に関与したプログラムレベルに対するイベント認識部にサブイベントを配信する。
【0044】
いくつかの実施形態において、別個のイベント認識部構造320又は360は、能動的に関与したイベント認識部毎に生成され且つデバイスのメモリに格納される。一般にイベント認識部構造320及び360は、それぞれ、イベント認識部状態334、374(図4A及び図4Bを参照する際に以下に更に詳細に説明する)、それぞれが状態遷移マシン340、380を有するイベント認識部専用コード338、378を含む。イベント認識部構造320はビュー階層基準336を更に含み、イベント認識部構造360はプログラム階層基準376を含む。特定のイベント認識部の各例は、厳密に1つのビュー又はプログラムレベルを参照する。ビュー階層基準336又はプログラム階層基準376(特定のイベント認識部に対する)は、それぞれのイベント認識部に論理的に結合されるビュー又はプログラムレベルを明らかにするために使用される。
【0045】
ビューメタデータ341及びレベルメタデータ381は、それぞれ、ビュー又はレベルに関するデータを含んでもよい。ビューメタデータ又はレベルメタデータは、イベント認識部へのサブイベント配信に影響を及ぼす可能性のある少なくとも以下の特性を含んでもよい。
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベル及びビュー又はプログラム階層における祖先と関連付けられたイベント認識部へのサブイベント配信を防止する停止特性342、382。
・ビュー又はプログラムレベルに対して設定された場合、ビュー又はプログラムレベルと関連付けられたイベント認識部へのサブイベント配信を防止するが、ビュー又はプログラム階層における祖先へのサブイベント配信を可能にするスキップ特性343、383。
・ビューに対して設定された場合、ビューがヒットビューでない限り、ビューと関連付けられたイベント認識部へのサブイベントの配信を防止する。上述したように、ヒットビュー判定モジュール314は、サブイベントを処理すべき階層における最低ビューとしてヒットビュー(又はヒットレベル判定モジュール352の場合はヒットレベル)を識別する。
【0046】
イベント認識部構造320及び360は、それぞれ、メタデータ322、362を含んでもよい。いくつかの実施形態において、メタデータ322、362は、イベント配信システムが能動的に関与したイベント認識部へのサブイベント配信を実行すべき方法を示す構成可能な特性、フラグ及びリストを含む。いくつかの実施形態において、メタデータ322、362は、イベント認識部が互いに対話してもよい方法を示す構成可能な特性、フラグ及びリストを含んでもよい。いくつかの実施形態において、メタデータ322、362は、ビュー又はプログラム階層における変動レベルにサブイベントが配信されるかを示す構成可能な特性、フラグ及びリストを含んでもよい。いくつかの実施形態において、イベント認識部メタデータ322、362とビューメタデータ又はレベルメタデータ(341、381のそれぞれ)との組合せは、双方とも、a)能動的に関与したイベント認識部へのサブイベント配信を実行し、b)イベント認識部が互いに対話してもよい方法を示し、且つc)サブイベントがビュー又はプログラム階層において種々のレベルに配信されるか及び配信される時を示すようにイベント配信システムを構成するために使用されるものである。
【0047】
尚、いくつかの実施形態において、それぞれのイベント認識部は、イベント認識部の構造320、360のフィールドにより規定されたように、イベント認識動作333、373をそれぞれの対象335、375に送出する。動作を対象に送出することは、サブイベントをそれぞれのヒットビュー又はヒットレベルに送出(及び遅延送出)することとは別個である。
【0048】
対応するイベント認識部のそれぞれのイベント認識部構造320、360に格納されたメタデータ特性は、少なくとも以下のことを含む。
・イベント認識部に対して設定された場合、イベント認識部によりイベントを認識すると、イベント配信システムが、能動的に関与したビュー又はプログラムレベルの他のあらゆるイベント認識部(例外リスト326、366に列挙された他のあらゆるイベント認識部を除く)へのサブイベントの配信を停止すべきことを示す排他性フラグ324、364。対応する排他性フラグ324又は364により示されたように、サブイベントを受信することにより特定のイベント認識部が排他的状態になる場合、後続サブイベントは、排他的状態のイベント認識部(及び例外リスト326、366に列挙された他のあらゆるイベント認識部)にのみ配信される。
・いくつかのイベント認識部構造320、360は、排他性例外リスト326、366を含んでもよい。このリスト326、366は、それぞれのイベント認識部に対するイベント認識部構造320、360に含まれる場合、それぞれのイベント認識部が排他的状態になった後もサブイベントを受信し続けるイベント認識部の集合を示す。例えば、シングルタップイベントに対するイベント認識部が排他的状態になり、且つ現在含まれているビューがダブルタップイベントに対するイベント認識部を含む場合、リスト320、360は、シングルタップイベントが検出された後もダブルタップイベントが認識されるように、ダブルタップイベント認識部を列挙するだろう。従って、排他性例外リスト326、366により、イベント認識部は、サブイベントの共通のシーケンスを共有する種々のイベントを認識できる。例えばシングルタップイベント認識は、他のイベント認識部によるダブルタップイベント又はトリプルタップイベントの後続認識を排除しない。
・いくつかのイベント認識部構造320、360は、待ちリスト327、367を含んでもよい。このリスト327、367は、それぞれのイベント認識部に対するイベント認識部構造320、360に含まれる場合、それぞれの認識部がそれぞれのイベントを認識する前にイベント不可能状態又はイベント取消状態になるべきであるイベント認識部の集合を示す。実質的に、列挙されたイベント認識部は、イベントを認識するための優先順位が待ちリスト327、367を含むイベント認識部より高い。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されるまで、イベント認識部がサブイベント(タッチ開始サブイベント又はフィンガーダウンサブイベント及び後続イベントを含む)をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ開始済フラグ328、368。このフラグは、ジェスチャが認識される場合にヒットビュー又はヒットレベルがいずれかのサブイベントを参照するのを防止するために使用される。イベント認識部がイベントを認識できない場合、タッチ開始済サブイベント(及びサブ後続タッチ終了サブイベント)は、ヒットビュー又はヒットレベルに配信される。一例において、そのようなサブイベントをヒットビュー又はヒットレベルに配信することにより、ユーザインタフェースは、オブジェクトと関連付けられた動作を呼び出すことなく、そのオブジェクトを簡単に強調表示する。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されるまで、イベント認識部がサブイベント(例えば、タッチ終了サブイベント)をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出するのを遅延させる遅延タッチ終了フラグ330、370。これは、ジェスチャが後で認識される場合にヒットビュー又はヒットレベルがタッチ終了サブイベントに影響を及ぼすのを防止するために使用される。タッチ終了サブイベントが送出されない限り、取り消されたタッチはヒットビュー又はヒットレベルに送出される。イベントが認識される場合、アプリケーションにより対応する動作が実行され、タッチ終了サブイベントはヒットビュー又はヒットレベルに配信される。
・イベント認識部に対して設定された場合、サブイベントのシーケンスがこのイベント認識部のイベントの種類に対応しないと判定されている際、イベント認識部がタッチ取消又は入力取消をイベント認識部のそれぞれのヒットビュー又はヒットレベルに送出させるタッチ取消フラグ332、372。ヒットビュー又はヒットレベルに送出されたタッチ取消又は入力取消は、先行するサブイベント(例えば、タッチ開始済サブイベント)が取り消されたことを示す。タッチ取消又は入力取消により、入力源ハンドラの状態(図4Bを参照)は入力シーケンス取消済状態460(以下に説明する)になってもよい。
【0049】
いくつかの実施形態において、例外リスト326、366は、非排他的イベント認識部により更に使用されてもよい。特に、非排他的イベント認識部がイベントを認識する場合、後続サブイベントは、イベントを認識したイベント認識部の例外リスト326、366に列挙された排他的イベント認識部を除いて、現在活動中のビューと関連付けられた排他的イベント認識部に配信されない。
いくつかの実施形態において、イベント認識部は、望ましくないサブイベントがヒットビューに配信されるのを防止するために、遅延タッチ終了フラグと組み合わせてタッチ取消フラグを利用するように構成されてもよい。例えば、シングルタップジェスチャの定義とダブルタップジェスチャの前半とは同一である。シングルタップイベント認識部がシングルタップを正常に認識すると、望ましくない動作が起こるだろう。遅延タッチ終了フラグが設定される場合、シングルタップイベントが認識されるまで、シングルタップイベント認識部がサブイベントをヒットビューに送出するのを防止する。また、シングルタップイベント認識部の待ちリストがダブルタップイベント認識部を識別できるため、ダブルタップイベント認識部がイベント不可能状態になるまで、シングルタップイベント認識部がシングルタップを認識するのを防止する。待ちリストを使用することにより、ダブルタップジェスチャが実行される際にシングルタップと関連付けられた動作を実行するのを回避する。その代わり、ダブルタップイベントの認識に応答して、ダブルタップと関連付けられた動作のみが実行される。
【0050】
タッチセンシティブ表面上のユーザタッチの形態を特に参照すると、上述したように、タッチ及びユーザジェスチャは瞬時でなくてもよい動作を含んでもよく、例えばタッチは、ある期間ディスプレイに対して指を移動又は保持する動作を含んでもよい。しかし、タッチデータ構造は、特定の時間のタッチの状態(すなわち、より一般的にはあらゆる入力源の状態)を定義する。従って、タッチデータ構造に格納された値がシングルタッチのコースを変更することにより、異なる時点のシングルタッチの状態をアプリケーションに搬送できる。
【0051】
各タッチデータ構造は種々のフィールドを備える。いくつかの実施形態において、タッチデータ構造は、少なくとも図3Bのタッチ専用フィールド339又は図3Cの入力源専用フィールド379に対応するデータを含んでもよい。
【0052】
例えば、図3Bの「ビューに対する第1のタッチ」フィールド345(図3Cの「レベルに対する第1のタッチ」385)は、タッチデータ構造が特定のビューに対する第1のタッチを定義するかどうかを示す(ビューを実現するソフトウェア要素がインスタンス化されたため)。「タイムスタンプ」フィールド346、386は、タッチデータ構造が関連する特定の時間を示す。
【0053】
オプションとして、「情報(info)」フィールド347、387は、タッチが基本的なジェスチャであるかを示すために使用されてもよい。例えば「情報」フィールド347、387は、タッチがスワイプ(swipe)であるかを示し、スワイプである場合にはスワイプを配向する方向を示す。スワイプとは、1つ以上の指を直線方向に迅速にドラッグすることである。API実現例(以下に説明する)は、タッチがスワイプであるかを判定し且つその情報を「情報」フィールド347、387を介してアプリケーションに渡すことにより、タッチがスワイプであった場合に必要であったと考えられるあるデータ処理のアプリケーションを減少させる。
【0054】
オプションとして、図3Bの「タップカウント(Tap Count)」フィールド348(図3Cの「イベントカウント(Event Count)」フィールド388)は、初期タッチの位置で順次実行されたタップの数を示す。タップは、特定の位置でタッチセンシティブパネルに対して指を迅速に押下し且つ離すものとして定義される。指がパネルの同一の位置で迅速に継続して再度押下され且つ解放される場合、複数の連続したタップが発生する。イベント配信システム124は、タップをカウントし、「タップカウント」フィールド348を介してこの情報をアプリケーションに中継する。同一の場所における複数のタップは、有用であり且つタッチ対応インタフェースに対する覚えやすいコマンドであると考えられることもある。従って、タップをカウントすることにより、イベント配信システム124は、アプリケーションからのあるデータ処理を再度減少させる。
【0055】
「段階(phase)」フィールド349、389は、タッチに基づくジェスチャが現在ある特定の段階を示す。段階フィールド349、389は、タッチデータ構造が先行するタッチデータ構造により参照されていない新しいタッチを定義することを示す「タッチ段階開始済(Touch phase began)」等の種々の値を有する。「タッチ段階移動済(Touch phase moved)」値は、定義されているタッチが従来の位置から移動したことを示す。「タッチ段階静止(Touch phase stationary)」値は、タッチが同一の位置に留まっていることを示す。「タッチ段階終了済(Touch phase ended)」値は、タッチが終了した(例えば、ユーザがマルチタッチディスプレイの表面から指を離した)ことを示す。「タッチ段階取消済(Touch phase cancelled)」値は、タッチがデバイスにより取り消されたことを示す。取り消されたタッチは、ユーザにより必ずしも終了されなくてもよいが、デバイスが無視することを判定したタッチである。例えばデバイスは、タッチが意図せず(すなわち、ポータブルマルチタッチ対応デバイスをポケットに入れた結果)生成されていると判定し、その理由によりタッチを無視する。「段階フィールド(Phase field」349、389の各値は整数である。
【0056】
従って、各タッチデータ構造は、特定の時間にタッチ(又は他の入力源)で発生していること(例えば、タッチが静止しているか、移動しているか等)及びタッチと関連付けられた他の情報(位置等)を定義する。従って、各タッチデータ構造は、特定の瞬間の特定のタッチの状態を定義する。同一の時間を参照する1つ以上のタッチデータ構造は、特定のビューが瞬間に受信している全てのタッチの状態を定義するタッチイベントデータ構造に追加される(上述したように、いくつかのタッチデータ構造は、終了し且つもう受信されていないタッチを更に参照してもよい)。複数のタッチイベントデータ構造は、ビューで発生しているタッチを示す連続した情報をソフトウェアに提供するために、時間が経つにつれビューを実現するソフトウェアに送出される。
【0057】
オプションとしてマルチタッチジェスチャを含む複雑なタッチに基づくジェスチャを処理する機能は、種々のソフトウェア要素を複雑にする。いくつかの例において、そのように複雑になることにより、高度な所望のインタフェース機能を実現する必要がある。例えばゲームは、同時に複数のボタンを押下したり、あるいは加速度計データをタッチセンシティブ表面上のタッチと組み合わせたりすることを必要とする場合が多いため、種々のビューで発生する複数の同時のタッチを処理する機能を必要とするだろう。しかし、いくつかのより単純なアプリケーション及び/又はビュー(並びに、それらと関連付けられたソフトウェア要素)は、高度なインタフェース機能を必要としなくてもよい。例えば単純なソフトボタン(すなわち、タッチセンシティブディスプレイ上に表示されるボタン)は、マルチタッチ機能性ではなくシングルタッチで十分に動作できる。これらの場合、基礎となるOSは、シングルタッチ(例えば、ソフトボタン上のシングルタッチ又はシングルタップ)のみにより動作可能であることを意図するビューと関連付けられたソフトウェア要素に不必要なタッチデータ又は過剰なタッチデータ(例えば、マルチタッチデータ)を送出してもよい。ソフトウェア要素は、このデータを処理する必要があるため、シングルタッチのみが関連するビューと関連付けられても、複数のタッチを処理するソフトウェア要素の全ての複雑さを備える必要があるだろう。従来マウスインタフェース環境(すなわち、種々のボタン等)でプログラムするのが容易であったソフトウェア要素がマルチタッチ環境で非常により複雑になる可能性があるため、これによりデバイスに対してソフトウェアを開発するコストが増加する。
【0058】
しかし、タッチセンシティブ表面上でユーザタッチを評価し且つ処理する複雑さに関する上記の説明は、それぞれ、入力デバイス128及び158を備える電子デバイス102及び104を操作する全ての形態のユーザ入力に更に当てはまり、ユーザ入力の全てがタッチスクリーン上で開始されるわけではなく、例えば、認識されるイベントを定義するサブイベントに対応する入力として利用されてもよい一回又は複数回のキーボード押下又はキーボード保持を含むかあるいは含まないマウスの移動及びマウスボタンの押下、タッチパッド上のユーザ移動タップ、ドラッグ、スクロール等、ペンスタイラスの入力、音声命令、検出された眼球運動、生体情報認識入力、検出されたユーザの生理学的変化、並びに/あるいはそれらのあらゆる組合せを連係することが理解されるだろう。
【0059】
図4Aは、4つの状態を含むイベント認識部状態遷移マシン400を示す。受信したサブイベントに基づいてイベント認識部状態遷移マシン400の状態遷移を管理することにより、イベント認識部はイベント定義を効率的に表す。例えばタップジェスチャは、2つ又はオプションとして3つのサブイベントのシーケンスにより効率的に定義されてもよい。第1に、タッチは検出されるべきであり、これはサブイベント1となる。例えばタッチサブイベントは、状態遷移マシン400を有するイベント認識部を含むビューでタッチセンシティブ表面に触れるユーザの指であってもよい。第2に、タッチが実質的に所定の方向に全く移動しないオプションの測定された遅延(例えばタッチ位置のあらゆる移動は、ディスプレイ上で距離(例えば、5mm)又は画素数(例えば、5画素)として測定されてもよい所定の閾値より小さい)及び遅延は、十分に短く、サブイベント2として提供される。最後に、タッチの終了(例えば、タッチセンシティブ表面からユーザの指を離すこと)は、サブイベント3として提供される。これらのサブイベントを受信することに基づいてイベント認識部状態遷移マシン400を状態間の遷移に符号化することにより、イベント認識部状態遷移マシン400は、タップジェスチャイベント定義を効率的に表す。
【0060】
イベントの種類にかかわらず、イベント認識部状態遷移マシン400は、イベント認識開始状態405から開始し、受信するサブイベントに依存して残りの状態のうちのいずれかに進んでもよい。イベント認識部状態遷移マシン400の説明を容易にするために、イベント可能状態410からの経路を説明した後、イベント認識開始状態405からイベント認識済状態415、イベント可能状態410及びイベント不可能状態420への直接経路を説明する。
【0061】
イベント認識開始状態405から開始し、単独でイベントのイベント定義を含むサブイベントが受信される場合、イベント認識部状態遷移マシン400はイベント認識済状態415に遷移する。
【0062】
状態イベント認識開始405から開始し、イベント定義の第1のサブイベントではないサブイベントが受信される場合、イベント認識部状態遷移マシン400はイベント不可能状態420に遷移する。
【0063】
イベント認識開始状態405から開始し、所定のイベント定義の第1のサブイベントであり且つ最後のサブイベントではないサブイベントが受信される場合、イベント認識部状態遷移マシン400はイベント可能状態410に遷移する。受信する次のサブイベントが所定のイベント定義の第2のサブイベントであるが、最後のサブイベントではない場合、イベント認識部状態遷移マシン400は状態イベント可能410のままである。受信したサブイベントのシーケンスがイベント定義の部分であり続ける限り、イベント認識部状態遷移マシン400は状態イベント可能410のままである。イベント認識部状態遷移マシン400は、常にイベント可能状態410であり且つイベント定義の一部ではないサブイベントを受信する場合、状態イベント不可能420に遷移することにより、現在のイベント(もしあれば)がこのイベント認識部(すなわち、状態400に対応するイベント認識部)に対応するイベントの種類ではないと判定する。一方、イベント認識部状態遷移マシン400は、イベント可能状態410であり且つイベント定義の最後のサブイベントを受信する場合、イベント認識済状態415に遷移することにより、正常なイベント認識を完了する。
【0064】
図4Bは、ビューがそれぞれの入力に関する情報を受信する方法を示す有限の状態遷移マシンを有する入力源処理過程(input source handling process)440の一実施形態を示す。尚、デバイスのタッチセンシティブ表面上に複数のタッチがある場合、各タッチは、自身の有限の状態遷移マシンを有する別個の入力源である。本実施形態において、入力源処理過程440は、入力シーケンス開始445、入力シーケンス継続450、入力シーケンス終了済455及び入力シーケンス取消済460の4つの状態を含む。入力源処理過程440は、例えば入力シーケンスの完了が検出された後で初めて入力がアプリケーションに配信される場合、それぞれのイベント認識部により使用されてもよい。入力源処理過程440は、アプリケーションに配信された入力シーケンスに応答して実行された変化を取り消せないかあるいは解除できないアプリケーションで使用される。
【0065】
入力シーケンス開始445から開始し、単独で入力シーケンスを完了する入力が受信される場合、入力源処理過程440は入力シーケンス終了済455に遷移する。
【0066】
入力シーケンス開始445から開始し、終了した入力シーケンスを示す入力が受信される場合、入力源処理過程440は入力シーケンス取消済460に遷移する。
【0067】
入力シーケンス開始445から開始し、入力シーケンスの第1の入力であり且つ最後の入力ではない入力が受信される場合、入力源処理過程440は、状態入力シーケンス継続450に遷移する。受信する次の入力が入力シーケンスの第2の入力である場合、入力処理過程440は状態入力シーケンス継続450のままである。配信されるサブイベントのシーケンスが所定の入力シーケンスの部分であり続ける限り、入力源処理過程440は状態入力シーケンス継続450のままである。入力源処理過程440は、常に状態入力シーケンス継続450であり且つ入力シーケンスの部分ではない入力を受信する場合、状態入力シーケンス取消済460に遷移する。一方、入力源処理過程440は、入力シーケンス継続450であり且つ所定の入力定義の最後の入力を受信する場合、入力シーケンス終了済455に遷移することにより、サブイベントのグループを正常に受信する。
【0068】
いくつかの実施形態において、入力源処理過程440は、特定のビュー又はプログラムレベルに対して実現されてもよい。その場合、サブイベントの特定のシーケンスは、結果として状態入力取消済460に遷移してもよい。
【0069】
一例として、能動的に関与したビュー入力源ハンドラ480(以下、「ビュー480」)のみで表された能動的に関与したビューを想定する図4Cを考える。ビュー480は、イベント認識部のうちの1つとして縦スワイプイベント認識部468(以下、「認識部468」)のみで表された縦スワイプイベント認識部を含む。この場合、認識部468は、1)フィンガーダウン465−1、2)オプションのわずかな遅延465−2、3)少なくともN画素の縦スワイプ465−3及び4)フィンガーリフトオフ465−4を検出することを定義の一部として必要としてもよい。
【0070】
例えば認識部468は、設定された遅延タッチ開始済フラグ328及びタッチ取消フラグ332を更に有する。次に、認識部468及びビュー480への以下のサブイベントのシーケンスの配信を考える。
・サブイベントシーケンス465−1:認識部468のイベント定義に対応するフィンガーダウン検出
・サブイベントシーケンス465−2:認識部468のイベント定義に対応する遅延測定
・サブイベントシーケンス465−3:指は、縦方向のスクローリングと互換性のある縦スワイプ移動を実行するがN画素より小さいため、認識部468のイベント定義に対応しない
・サブイベントシーケンス465−4:認識部468のイベント定義に対応するフィンガーリフトオフ検出
【0071】
次に認識部468は、イベント定義の一部としてサブイベント1及び2を正常に認識することにより、サブイベント3の配信の直前にイベント可能472の状態になるだろう。認識部468が設定された遅延タッチ開始済フラグ328を有するため、初期タッチサブイベントはヒットビューに送出されない。従って、ビュー480の入力源処理過程440は、サブイベント3の配信の直前に依然として状態入力シーケンス開始のままだろう。
【0072】
認識部468へのサブイベント3の配信が完了すると、認識部468の状態はイベント不可能476に遷移し、次に認識部468が、サブイベントのシーケンスが特定の縦スワイプジェスチャイベントの種類に対応しないと判定した(すなわち、認識部468は、イベントが縦スワイプではないと判断した。換言すると、縦スワイプとしての認識474はこの例では発生しない)ことが重要である。ビュー入力源ハンドラ480に対する入力源処理システム440は、その状態を更に更新する。いくつかの実施形態において、イベント認識部がイベントを認識し始めたことを示すステータス情報を送出する場合、ビュー入力源ハンドラ480の状態は、入力シーケンス開始状態482から入力シーケンス継続状態484に進むだろう。イベント認識部のタッチ取消フラグ322が設定されたためにイベントが認識されずにタッチ又は入力が終了する場合、ビュー入力源ハンドラ480は入力シーケンス取消済状態488になる。あるいは、イベント認識部のタッチ取消フラグ322が設定されていない場合、ビュー入力源ハンドラ480は、入力のタッチが終了する際に入力シーケンス終了済状態486になる。
【0073】
イベント認識部468のタッチ取消フラグ332が設定されるため、イベント認識部468がイベント不可能状態476に遷移する場合、認識部は、タッチ取消のサブイベント又はメッセージをイベント認識部に対応するヒットビューに送出する。その結果、ビュー入力源ハンドラ480は状態入力シーケンス取消済488に遷移する。
【0074】
いくつかの実施形態において、ビュー入力源ハンドラ480の他のイベント認識部がある場合は、サブイベントのシーケンスを解析し続けてもよいが、サブイベント465−4の配信は、認識部468により判断されたいずれのイベント認識にも密接に関連しない。
【0075】
以下の表は、ビュー入力源ハンドラ480の状態と共に、上述したイベント認識部468の状態に関連するようなこの例示的なサブイベントシーケンス465の処理を要約した表形式で示す。この例において、認識部468のタッチ取消フラグ332が設定されたため、ビュー入力源ハンドラ480の状態は入力シーケンス開始445から入力シーケンス取消済488に進む。
【0076】
【表1】
【0077】
図5Aを参照し、複数のイベント認識部を含む或るビューにより受信されているサブイベントシーケンス520の一例に注目する。例えば、2つのイベント認識部、すなわちスクローリングイベント認識部580及びタップイベント認識部590を図5Aに示す。説明のために、図3Aのビュー探索結果パネル304は、サブイベントシーケンス520の受信、並びにスクローリングイベント認識部580及びタップイベント認識部590における状態変遷に関連する。尚、この例において、サブイベント520のシーケンスは、タッチセンシティブディスプレイ又はトラックパッド上のタップフィンガージェスチャを定義するが、同一のイベント認識技術が、マウスボタンの押下を検出する等の無数の状況及び/又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【0078】
第1のサブイベントがビュー探索結果パネル304に配信される前、イベント認識部580及び590は、それぞれ、イベント認識開始状態582及び592である。タッチサブイベント301−2としてビュー探索結果パネル304に対して能動的に関与したイベント認識部(及びタッチサブイベント301−3として地図ビュー305に対して能動的に関与したイベント認識部)にフィンガーダウン検出521−1サブイベントとして配信されるタッチ301に続き、スクローリングイベント認識部580は状態イベント可能584に遷移し、同様にタップイベント認識部590は状態イベント可能594に遷移する。これは、タッチ及びスクロールの双方のイベント定義が、タッチセンシティブ表面上でフィンガーダウンを検出すること等のタッチで開始するためである。
【0079】
タップジェスチャ及びスクロールジェスチャのいくつかの定義は、オプションとして、イベント定義の初期タッチと何らかの次のステップとの間の遅延を含んでもよい。本明細書で説明する全ての例において、タップジェスチャ及びスクロールジェスチャの双方に対するイベント定義は、第1のタッチサブイベント(フィンガーダウン検出)に後続する遅延サブイベントを認識する。
【0080】
従って、測定遅延521−2サブイベントがイベント認識部580及び590に配信されるため、双方は、それぞれ、イベント可能状態584及び594のままである。
【0081】
最後に、フィンガーリフトオフ検出521−3サブイベントは、イベント認識部580及び590に配信される。この場合、タップ及びスクロールのイベント定義が異なるため、イベント認識部580及び590の状態遷移は異なる。スクローリングイベント認識部580の場合、状態イベント可能のままである次のサブイベントは移動を検出するサブイベントだろう。しかし、配信されたサブイベントがフィンガーリフトオフ検出521−3であるため、スクローリングイベント認識部580は状態イベント不可能588に遷移する。しかし、タップイベント定義はフィンガーリフトオフサブイベントで終了する。従って、タップイベント認識部590は、フィンガーリフトオフ521−3サブイベントが配信された後で状態イベント認識済596に遷移する。
【0082】
尚、いくつかの実施形態において、図4B及び図4Cに関連して上述したように、図4Bで説明された入力源処理過程440は、ビューレベルで種々の目的のために使用されてもよい。以下の表は、イベント認識部580、590に関連するようなサブイベントシーケンス520の配信及び入力源処理過程440を要約した表形式で示す。
【0083】
【表2】
【0084】
図5Bを参照し、複数のイベント認識部を含むビューにより受信されているサブイベントシーケンス530の別の例に注目する。例えば、2つのイベント認識部、すなわちスクローリングイベント認識部580及びタップイベント認識部590を図5Bに示す。説明のために、図3Aのビュー探索結果パネル304は、サブイベントシーケンス530の受信、並びにスクローリングイベント認識部580及びタップイベント認識部590における状態変遷に関連する。尚、この例において、サブイベント530のシーケンスは、タッチセンシティブディスプレイ上のスクロールフィンガージェスチャを定義するが、同一のイベント認識技術が、マウスボタンの押下、マウスの移動及びマウスボタンの解放を検出する等の無数の状況、並びに/又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【0085】
第1のサブイベントがビュー探索結果パネル304に対して能動的に関与したイベント認識部に配信される前、イベント認識部580及び590は、それぞれ、イベント認識開始状態582及び592である。タッチ301に対応するサブイベントの配信(上述したような)に続き、スクローリングイベント認識部580は状態イベント可能584に遷移し、同様にタップイベント認識部590は状態イベント可能594に遷移する。
【0086】
測定遅延531−2サブイベントがイベント認識部580及び590に配信されるため、双方は、それぞれ、イベント可能状態584及び594に遷移する。
【0087】
次に、フィンガー移動検出531−3サブイベントはイベント認識部580及び590に配信される。この場合、タップ及びスクロールのイベント定義が異なるため、イベント認識部580及び590の状態遷移は異なる。スクローリングイベント認識部580の場合、状態イベント可能のままである次のサブイベントは移動を検出するサブイベントであるため、スクローリングイベント認識部580は、フィンガー移動検出531−3サブイベントを受信する場合にイベント可能状態584のままである。しかし、上述したように、タップの定義がフィンガーリフトオフサブイベントで終了するため、タップイベント認識部590は状態イベント不可能598に遷移する。
【0088】
最後に、フィンガーリフトオフ検出531−4サブイベントはイベント認識部580及び590に配信される。タップイベント認識部は既にイベント不可能状態598であり、状態遷移は発生しない。スクローリングイベント認識部580のイベント定義は、フィンガーリフトオフを検出して終了する。配信されたサブイベントがフィンガーリフトオフ検出531−4であるため、スクローリングイベント認識部580は状態イベント認識済586に遷移する。尚、タッチセンシティブ表面上のフィンガー移動が複数の移動サブイベントを生成するため、スクロールは、リフトオフの前に認識され且つリフトオフまで継続してもよい。
【0089】
以下の表は、イベント認識部580、590に関連するようなサブイベントシーケンス530の配信及び入力源処理過程440を要約した表形式で示す。
【0090】
【表3】
【0091】
図5Cを参照し、複数のイベント認識部を含む或るビューにより受信されているサブイベントシーケンス540の別の例に注目する。例えば、2つのイベント認識部、すなわちダブルタップイベント認識部570及びタップイベント認識部590を図5Cに示す。説明のために、図3Aの地図ビュー305は、サブイベントシーケンス540の受信、並びにダブルタップイベント認識部570及びタップイベント認識部590における状態変遷に関連する。尚、この例において、サブイベント540のシーケンスは、タッチセンシティブディスプレイ上のダブルタップジェスチャを定義するが、同一のイベント認識技術が、マウスダブルクリックを検出する等の無数の状況及び/又はプログラムレベルのプログラム階層を利用する実施形態で適用されてもよい。
【0092】
第1のサブイベントが地図ビュー305に対して能動的に関与したイベント認識部に配信される前、イベント認識部570及び590は、それぞれ、イベント認識開始状態572及び592である。タッチサブイベント301に関連したサブイベントの地図ビュー304への配信(上述したような)に続き、ダブルタップイベント認識部570及びタップイベント認識部590は、それぞれ、状態イベント可能574及び594に遷移する。これは、タップ及びダブルタップの双方のイベント定義がタッチセンシティブ表面上でフィンガーダウンを検出する等のタッチで開始するためである。
【0093】
測定遅延541−2サブイベントがイベント認識部570及び590に配信されるため、双方は、それぞれ、状態イベント可能574及び594のままである。
【0094】
次に、フィンガーリフトオフ検出541−3サブイベントはイベント認識部570及び590に配信される。この場合、タップ及びダブルタップのイベント定義が異なるため、イベント認識部580及び590の状態遷移は異なる。タップイベント認識部590の場合、イベント定義の最後のサブイベントがフィンガーリフトオフを検出するサブイベントであるため、タップイベント認識部590はイベント認識済状態596に遷移する。
【0095】
しかし、ユーザが最終的に実行する可能性があることに関係なく遅延が開始しているため、ダブルタップ認識部570は状態イベント可能574のままである。完全なタップサブイベントシーケンスが後続するが、ダブルタップの完全なイベント認識定義は別の遅延を必要とする。これにより、既に状態イベント認識済576であるタップイベント認識部590と依然として状態イベント可能574のままであるダブルタップ認識部570との間のような曖昧な状況が発生する。
【0096】
従って、いくつかの実施形態において、イベント認識部は、図3B及び図3Cに関連して上述したような排他性フラグ及び排他性例外リストを実現してもよい。本明細書において、タップイベント認識部590に対する排他性フラグ324が設定され、更にタップイベント認識部590に対する排他性例外リスト326は、タップイベント認識部590が状態イベント認識済596になった後にいくつかのイベント認識部(ダブルタップイベント認識部570等)へのサブイベントの配信を許可し続けるように構成されるだろう。
【0097】
タップイベント認識部590は状態イベント認識済596のままであり、サブイベントシーケンス540はダブルタップサブイベント認識部570に配信され続ける。遅延測定541−4サブイベント、フィンガーダウン検出541−5サブイベント及び遅延測定541−6サブイベントはダブルタップ認識部570を状態イベント可能574に維持し、最後のシーケンスのサブイベント540、すなわちフィンガーリフトオフ検出541−7の配信により、ダブルタップ認識部570は状態イベント認識済576に遷移する。
【0098】
この時点で、地図ビュー305は、タップイベント認識部590により認識されたシングルタップイベントではなく、イベント認識部570により認識されたようなイベントダブルタップを選択する。ダブルタップイベントを選択するという判断は、設定されるタップイベント認識部590の排他的フラグ324、ダブルタップイベントを含むタップイベント認識部590の排他性例外リスト326、並びにタップイベント認識部590及びダブルタップ認識部570の双方がそれぞれのイベントの種類を正常に認識したという事実の組合せを考慮して行われる。
【0099】
以下の表は、イベント認識部570及び590に関連するようなサブイベントシーケンス540の配信、並びにサブイベント処理過程440を要約した表形式で示す。
【0100】
【表4】
【0101】
別の実施形態において、図5Cのイベントの例では、シングルタップイベント認識部がダブルタップイベント認識部を識別する待ちリストを有するため、シングルタップジェスチャは識別されない。その結果、(実行されたとしても)ダブルタップイベント認識部がイベント不可能状態になるまで、シングルタップジェスチャは認識されない。ダブルタップジェスチャが認識されるこの例において、ダブルタップジェスチャが認識されるまで、シングルタップイベント認識部はイベント可能状態のままだろう。その時点で、シングルタップイベント認識部はイベント不可能状態に遷移するだろう。
【0102】
次に、いくつかの実施形態に係るイベント認識方法を示すフローチャートである図6A及び図6Bに注目する。上述したように、いくつかの実施形態において電子デバイス102又は104であってもよい電子デバイスで方法600を実行する。いくつかの実施形態において、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチセンシティブ表面を含んでもよい。あるいは、電子デバイスは、マルチタッチジェスチャを検出するように構成されたタッチスクリーンを含んでもよい。
【0103】
方法600は、複数のビューを有するビュー階層を含むソフトウェアを実行するように構成される。方法600は、ビュー階層の1つ以上のビューを表示し(608)、1つ以上のソフトウェア要素を実行する(610)。各ソフトウェア要素は特定のビューと関連付けられ、各特定のビューは、それぞれ、イベント認識部構造320及び360として図3B及び図3Cで説明されたような1つ以上のイベント認識部を含む。
【0104】
一般に各イベント認識部は、1つ以上のサブイベントに基づいて状態遷移マシンとして実現されてもよいイベント定義を含む。状態遷移マシンについては、例えば図3Bの状態遷移マシン340を参照する。更にイベント認識部は、一般に、対象に対する動作を規定するイベントハンドラを含み、イベント定義に対応するイベントを検出するイベント認識部に応答して動作を対象に送出するように構成される。
【0105】
いくつかの実施形態において、図6Aのステップ612に示されたように、複数のイベント認識部のうちの少なくとも1つは、ジェスチャ定義及びジェスチャハンドラを有するジェスチャ認識部である。
【0106】
いくつかの実施形態において、図6Aのステップ614に示されたように、イベント定義はユーザジェスチャを定義する。
【0107】
あるいは、イベント認識部はイベント認識状態の集合を有する(616)。これらのイベント認識状態は、少なくともイベント可能状態、イベント不可能状態及びイベント認識済状態を含んでもよい。
【0108】
いくつかの実施形態において、イベントハンドラは、イベント認識部がイベント可能状態になる場合に対象に配信するための対応する動作の準備を開始する(618)。図4A及び図5A図5Cの例に関連して上述したように、イベント認識部毎に実現された状態遷移マシンは、一般に状態イベント認識開始405等の初期状態を含む。イベント定義の初期部分を形成するサブイベントを受信することにより、イベント可能状態410への状態変化をトリガする。従って、いくつかの実施形態において、イベント認識部が状態イベント認識開始405から状態イベント可能410に遷移するのに伴い、イベント認識部のイベントハンドラは、イベントが正常に認識された後でイベント認識部の対象へ配信するための特定の動作を準備し始めてもよい。
【0109】
一方、いくつかの実施形態において、イベントハンドラは、イベント認識部が状態イベント不可能420になる場合に対応する動作の準備を終了してもよい(620)。いくつかの実施形態において、対応する動作を終了することは、イベントハンドラの対応する動作のあらゆる準備を取り消すことを含む。
【0110】
タップイベント認識部590が動作の準備を開始していてもよい(618)ため、図5Bの例は本実施形態とって有益である。しかし、フィンガー移動検出531−3サブイベントがタップイベント認識部590に配信されると、認識部590はイベント不可能状態598、578に遷移する。その時点で、タップイベント認識部590は、準備を開始した(618)動作の準備を終了してもよい(620)。
【0111】
いくつかの実施形態において、イベントハンドラは、イベント認識部がイベント認識済状態になる場合に対象に配信するための対応する動作の準備を完了する(622)。地図ビュー305に対して能動的に関与したイベント認識部によりダブルタップが認識されるため、図5Cの例は本実施形態を示す。それは、いくつかの実現例において、地図ビュー305により示された探索結果を選択し且つ/あるいは実行する義務があるイベントである。本明細書において、ダブルタップイベント認識部570がサブイベントシーケンス540から構成されるダブルタップイベントを正常に認識した後、地図ビュー305のイベントハンドラは、動作、すなわち起動コマンドを受信したことを示す動作の準備を完了する(622)。
【0112】
いくつかの実施形態において、イベントハンドラは、対応する動作をイベント認識部と関連付けられた対象に配信する(624)。引き続き図5Cの例を参照すると、準備された動作、すなわち地図ビュー305の起動コマンドは、地図ビュー305と関連付けられた特定の対象に配信される。これは、あらゆる適切なプログラムの方法又は目的であってもよい。
【0113】
あるいは、複数のイベント認識部は、1つ以上のサブイベントのシーケンスを並列に個別に処理してもよい(626)。
【0114】
いくつかの実施形態において、それぞれ、図3B及び図3Cの排他性フラグ324及び364に関連して上述したように、1つ以上のイベント認識部は排他的イベント認識部628として構成されてもよい。イベント認識部が排他的イベント認識部として構成される場合、イベント配信システムは、排他的イベント認識部がイベントを認識した後、ビュー階層で能動的に関与したビューに対する他のあらゆるイベント認識部(イベントを認識するイベント認識部の例外リスト326、366に列挙されたものを除く)が後続サブイベント(サブイベントの同一のシーケンスの)を受信するのを防止する。また、非排他的イベント認識部がイベントを認識する場合、イベント配信システムは、イベントを認識するイベント認識部の例外リスト326、366に列挙されたもの(もしあれば)を除き、ビュー階層で能動的に関与したビューに対するあらゆる排他的イベント認識部が後続サブイベントを受信するのを防止する。
【0115】
いくつかの実施形態において、それぞれ、図3B及び図3Cの排他性例外リスト326及び366に関連して上述したように、排他的イベント認識部はイベント例外リストを含んでもよい(630)。上記の図5Cの説明で示されたように、イベント認識部の排他性例外リストは、それぞれのイベント定義を構成するサブイベントのシーケンスが重複する場合でもイベント認識部がイベント認識を継続できるようにするために使用される。従って、いくつかの実施形態において、イベント例外リストは、対応するイベント定義が反復サブイベント、例えば図5Cのシンブルタップ/ダブルタップイベントの例を有するイベントを含む(632)。
【0116】
あるいは、イベント定義はユーザ入力動作を定義してもよい(634)。
【0117】
いくつかの実施形態において、1つ以上のイベント認識部は、イベントが認識されるまでサブイベントのシーケンスの全てのサブイベントを配信するのを遅延させるように構成されてもよい。
【0118】
方法600は1つ以上のサブイベントのシーケンスを検出し(636)、いくつかの実施形態において、1つ以上のサブイベントのシーケンスは基本のタッチイベントを含んでもよい(638)。基本のタッチイベントは、タッチセンシティブ表面上のタッチに基づくジェスチャの基本構成要素、例えば最初のフィンガータッチダウン又はスタイラスタッチダウンに関連したデータ、タッチセンシティブ表面にわたる複数のフィンガー移動又はスタイラス移動の開始に関連したデータ、逆方向の2フィンガー移動、タッチセンシティブ表面からのスタイラスリフトオフ等を含んでもよいがそれらに限定されない。
【0119】
1つ以上のサブイベントのシーケンスのサブイベントは、特に、キー押下、キー押下保持、キー押下解放、ボタン押下、ボタン押下保持、ボタン押下解放、ジョイスティック移動、マウスの移動、マウスボタンの押下、マウスボタンの解放、ペンスタイラスのタッチ、ペンスタイラスの移動、ペンスタイラスの解放、音声命令、検出された眼球運動、生体情報認識入力及び検出されたユーザの生理学的変化を含むがそれらに限定されない多くの形態を含んでもよい。
【0120】
方法600は、ビュー階層のビューのうちの1つをヒットビューとして識別する(640)。ヒットビューは、ビュー階層のどのビューが能動的に関与したビューであるかを明らかにする。能動的に関与したビュー306が、タッチサブイベント301が地図ビュー305と関連付けられた領域に接触したために地図ビュー305及び探索結果パネル304を含む一例を図3Aに示す。
【0121】
いくつかの実施形態において、ビュー階層内の第1の能動的に関与したビューは、その第1の能動的に関与したビューと関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成されてもよい(642)。この挙動により、図3B及び図3Cに関連して上述したスキップ特性(それぞれ、330及び370)を実現する。スキップ特性がイベント認識部に対して設定される場合、それぞれのサブイベントの配信は、ビュー階層で他の能動的に関与したビューと関連付けられたイベント認識部に対して依然として実行される。
【0122】
あるいは、ビュー階層内の第1の能動的に関与したビューは、第1の能動的に関与したビューがヒットビューでない限り、第1の能動的に関与したビューと関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成されてもよい(644)。この挙動により、図3B及び図3Cに関連して上述した条件付きスキップ特性(それぞれ、332及び372)を実現する。
【0123】
いくつかの実施形態において、ビュー階層内の第2の能動的に関与したビューは、第2の能動的に関与したビューと関連付けられたイベント認識部及び第2の能動的に関与したビューの祖先と関連付けられたイベント認識部へのそれぞれのサブイベントの配信を防止するように構成される(646)。この挙動により、図3B及び図3Cに関連して上述した停止特性(それぞれ、328及び368)を実現する。
【0124】
方法600は、ビュー階層内で能動的に関与したビュー毎にそれぞれのサブイベントをイベント認識部に配信する(648)。いくつかの実施形態において、ビュー階層で能動的に関与したビューに対するイベント認識部は、サブイベントのシーケンスの次のサブイベントを処理する前にそれぞれのサブイベントを処理する。あるいは、ビュー階層で能動的に関与したビューに対するイベント認識部は、それぞれのサブイベントを処理しつつサブイベント認識を判断する。
【0125】
いくつかの実施形態において、ビュー階層で能動的に関与したビューに対するイベント認識部は、1つ以上のサブイベントのシーケンスを同時に処理してもよい(650)。あるいは、ビュー階層で能動的に関与したビューに対するイベント認識部は、1つ以上のサブイベントのシーケンスを並列に処理してもよい。
【0126】
いくつかの実施形態において、1つ以上のイベント認識部は、イベント認識部がイベントを認識するまでサブイベントのシーケンスの1つ以上のサブイベントを送出するのを遅延させるように構成されてもよい(652)。この挙動は遅延したイベントを反映する。例えば、複数のタップジェスチャが可能であるビューのシングルタップジェスチャを考える。その場合、タップイベントは「タップ+遅延」認識部になる。本質的に、イベント認識部は、この挙動を実現する場合、サブイベントのシーケンスが実際にイベント定義に対応することを確定するまでイベント認識を遅延させる。受信側ビューが取り消されたイベントに適切に応答できない場合、この挙動は適切だろう。いくつかの実施形態において、イベント認識部は、サブイベントのシーケンスがイベント定義に対応しないことを確定するまで、イベント認識ステータスをそれぞれの能動的に関与したビューに更新するのを遅延させる。図3B及び図3Cに関連して上述したように、遅延タッチ開始済フラグ328、368、遅延タッチ終了フラグ330、370及びタッチ取消フラグ332、372は、サブイベント配信技術を調節するために提供され、イベント認識部及びビューステータス情報は特定のニーズに更新される。
【0127】
説明のために、特定の実施形態を参照して上記の説明を説明した。しかし、上記の例示的な説明は、本発明を網羅すること又は開示された厳密な形式に限定することを意図しない。多くの変更及び変形が上記教示に鑑みて可能である。本発明の原理及び実際的な応用例を最適に説明するために実施形態が選択され且つ説明されたことより、当業者は、考えられる特定の用途に適するような本発明及び種々の変更を含む種々の実施形態を最適に利用できる。
図1A
図1B
図2
図3A
図3B
図3C
図4A
図4B
図4C
図5A
図5B
図5C
図6A
図6B