JP6250151B2 - タッチパッド操作およびダブルタップ・ズーミングに対する独立ヒット・テスト - Google Patents

タッチパッド操作およびダブルタップ・ズーミングに対する独立ヒット・テスト Download PDF

Info

Publication number
JP6250151B2
JP6250151B2 JP2016519494A JP2016519494A JP6250151B2 JP 6250151 B2 JP6250151 B2 JP 6250151B2 JP 2016519494 A JP2016519494 A JP 2016519494A JP 2016519494 A JP2016519494 A JP 2016519494A JP 6250151 B2 JP6250151 B2 JP 6250151B2
Authority
JP
Japan
Prior art keywords
input
thread
hit test
response
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016519494A
Other languages
English (en)
Other versions
JP2016531335A5 (ja
JP2016531335A (ja
Inventor
ラコウ,マシュー・アレン
メノン,クリシュナン
エンス,マイケル・ジェイ
ウィルズ,ジョナサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016531335A publication Critical patent/JP2016531335A/ja
Publication of JP2016531335A5 publication Critical patent/JP2016531335A5/ja
Application granted granted Critical
Publication of JP6250151B2 publication Critical patent/JP6250151B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Description

[0001] ヒット・テスト(hit testing)とは、ウェブページのようなウェブ・コンテンツ内における所与の1組の座標に位置付けられたコンテンツを判定するプロセスを指す。ヒット・テストに対する共通のシナリオは、ユーザー入力、例えば、タッチ入力またはマウス・クリック入力を受けることを伴うシナリオに関連する。具体的には、ユーザー入力に対する正しい応答を判定するためには、どのコンテンツがユーザーの相互作用の主題(subject)であるのか発見するためにヒット・テストを実行する。ヒット・テストを遅らせるものはいずれも、今度はそれがシステムの応答を遅らせ、ユーザーの体験を劣化させる可能性がある。
[0002] 多くのシステムにおいて、ヒット・テストは、主スレッド、例えば、ユーザー・インターフェース・スレッドにおいて実行される。しかしながら、ユーザー・インターフェース・スレッドは、他の作業を実行していて使用中であるという可能性が頻繁にある。この他の作業は、JavaScript実行、レイアウト・タスク、レンダリング動作等を含むことができる。その結果、主スレッドにおいて行われるヒット・テストは、長時間または不定時間にわたって妨げられるおそれがある。
[0003] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではない。
[0004] 1つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストに利用する。ヒット・テストに別のスレッドを使用することによって、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作のために使用することができる操作スレッドのような、別のスレッドによってしかるべき応答が処理される場合、主スレッドにおいて妨げることなく操作を行うことができる。この結果、種々のシナリオにわたってロー・エンド・ハードウェアにおいても常に素早い応答時間が得られる。
[0005] 少なくともある実施形態では、ウェブ開発者が彼らのウェブページ上においてタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルするために、カスケード・スタイル・シート(CSS)ルールを利用する。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、独立したヒット・テストを使用して正しい応答を判断するときに、主スレッドからの完全な独立の達成を可能にする。
[0006] ある実施形態は、独立ヒット・テスト・スレッド内において追加の処理および/または論理処理を実行する能力を設ける。場合によっては、独立ヒット・テスト・スレッドは、1つ以上の入力シナリオ間で識別するように構成することができる。あるいはまたは加えて、入力シナリオに対する1つ以上の応答アクションを少なくとも部分的に初期化することができる。1つ以上の入力シナリオから別個の入力シナリオを判定するとき、関連する応答アクションを開始することができ、および/または実行のために別のスレッドに渡すことができる。尚、応答アクションを終了する通知を、部分的に初期化された応答アクションを管理するスレッドに送ることができる場合もある。
[0007] 詳細な説明は添付図面を参照する。図では、参照番号の最も左側にある桁(1つまたは複数)は、その参照番号が最初に現れる図を識別する。説明および図において異なる場合に同じ参照符号を使用するときは、同様のまたは同一の項目を示すことができる。
図1は、本明細書において説明する種々の実施形態を実行するように動作可能な実現例(example implementation)における環境の図である。 図2は、1つ以上の実施形態によるシーケンス図である。 図3は、1つ以上の実施形態による方法におけるステップを説明する流れ図である。 図3aは、1つ以上の実施形態による方法におけるステップを説明する流れ図である。 図3bは、1つ以上の実施形態による方法におけるステップを説明する流れ図である。 図4は、1つ以上の実施形態によるシーケンス図である。 図5は、1つ以上の実施形態によるシーケンス図である。 図6は、1つ以上の実施形態による方法におけるステップを説明する流れ図である。 図7は、図1を参照して説明したような計算デバイスを含むシステム例を示す。 図8は、本明細書において説明したような任意のタイプの計算デバイスとして実現することができるデバイス例の種々のコンポーネントを示す。
全体像
[0018] 1つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストに利用する。これを本明細書では「独立ヒット・テスト」と呼ぶ。ヒット・テストのために別のスレッドを使用することにより、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作のために使用することができる操作スレッドのような、別のスレッドによってしかるべき応答が処理される場合、主スレッドにおいて妨げることなく操作を行うことができる。この結果、種々のシナリオにわたってロー・エンド・ハードウェアにおいても常に素早い応答時間が得られる。
[0019] 少なくともある実施形態では、このヒット・テストの間に、範囲限定表示ツリー横断(scoped display tree traversal)を実行することができる。これは、場合によっては、しかるべき応答を判定するためにツリー全体の横断を回避することができる。その結果、表示ツリーの無関係な部分を飛ばすことによって、動作遂行(performance)を改善することができる。
[0020] 更に、少なくともある実施形態は、1つの表示ツリー・ノードの内、独立ヒット・テストの間であると見なされるべき特定領域を指定する能力を可能にする。これは、例えば、1つの表示ツリー・ノードが対象の下位領域を有し、この対象の下位領域がしかるべき応答についての判断を変更する場合に使用することができる。このような対象領域は、一例としてそして限定ではなく、ビデオ・エレメントにおける再生スライダー、または編集可能なコンテンツ上におけるサイズ変更グリッパー(resize gripper)を含むことができる。
[0021] 更に他の実施形態では、アプリケーションが、ヒット・テストに対する応答の一部として実行されるコールバック・ハンドラー(callback handler)を登録することができる。これは、典型的な内蔵機能を超える追加のホスト特定アクションのために使用することができる。
[0022] 少なくともある実施形態では、ウェブ開発者が彼らのウェブページ上においてタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルするために、カスケード・スタイル・シート(CSS)ルールを利用する。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、独立したヒット・テストを使用して正しい応答を判断するときに、主スレッドからの完全な独立の達成を可能にする。
[0023] CSSルールの使用は、要求された特定のデフォルト行動の、ウェブページ上における多くの別の領域への適用を容易にすることができる。これは、構成される各領域上にCSSクラスを設定するのと同じ位簡単にすることができる。
[0024] 以下の説明では、最初に、本明細書において説明する技法を採用することができる環境例について説明する。次いで、この環境例および他の環境においても実行することができる手順例について説明する。したがって、手順例の実行は環境例に限定されるのではなく、環境例が手順例の実行に限定されるのでもない。
環境例
[0025] 図1は、1つ以上の実施形態による動作環境を示し、全体的に100とする。環境100は、ローカル・クライアント・マシンの形態である計算デバイス102を含む。計算デバイス102は、1つ以上のプロセッサー104、1つ以上のコンピューター読み取り可能記憶媒体106、コンピューター読み取り可能記憶媒体上に存在しプロセッサー104によって実行される1つ以上のアプリケーション108を有する。また、計算デバイス102は、以下で説明するように動作する独立したヒット・テスト・コンポーネント110も含む。計算デバイス102は、一例としてそして限定ではなく、デスクトップ・コンピューター、携帯用コンピューター、パーソナル・ディジタル・アシスタント(PDA)のようなハンドヘルド・コンピューター、移動体電話機、テレビジョン、タブレット・コンピューター等というような、任意の適した計算デバイスとして具体化することができる。計算デバイス102の様々な異なる例については、以下で図4および図5において示し説明する。
[0026] アプリケーション108は、一例としてそして限定ではなく、ウェブ・ブラウザーおよび/または種々の他のウェブ・アプリケーションを含む、任意の適したタイプのアプリケーションを含むことができる。ウェブ・ブラウザーは、ネットワーク112を介してナビゲートするように構成される。ネットワーク112はインターネットとして例示されているが、ネットワークは種々の構成を想定することができる。例えば、ネットワーク112は、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレス・ネットワーク、公衆電話ネットワーク、イントラネット等を含むこともできる。更に、1つのネットワーク112が示されているが、ネットワーク112は複数のネットワークを含むように構成されてもよい。
[0027] 例えば、ブラウザーは、1つ以上のウェブ・サーバー114から利用可能なコンテンツと相互作用するため、そしてデーターを1つ以上のウェブ・サーバー114に通信するため、例えば、ダウンロードおよびアップロードを実行するために、ネットワーク112を介してナビゲートするように構成することができる。ウェブ・サーバー114は、ネットワーク112を介してアクセス可能な1つ以上のサービスを提供するように構成することができる。このようなサービスの例には、電子メール、ウェブページ、写真共有サイト、ソーシャル・ネットワーク、コンテンツ共有サービス、メディア・ストリーミング・サービス等が含まれる。
[0028] アプリケーション108の1つ以上は、ネットワーク112にアクセスするように、例えば、直接それら自体で、および/またはブラウザーを介して(アプリケーション108がウェブ・ブラウザーでない場合)アクセスするように構成することもできる。例えば、アプリケーション108の内1つ以上が、電子メール、インスタント・メッセージ等のようなメッセージを伝達するように構成されてもよい。追加の例では、アプリケーション108は、例えば、ソーシャル・ネットワークにアクセスし、天気更新を入手し、ウェブ・サービス114の内1つ以上によって実現される書店サービスと相互作用し、ワード・プロセッシングをサポートし、スプレッドシート機能を提供し、プレゼンテーションの作成および出力をサポートする等を行うように構成されてもよい。
[0029] このように、アプリケーション108は、直接または間接的なネットワーク112へのアクセスを伴うこともある種々の機能のために構成することもできる。例えば、アプリケーション108は、アプリケーション108によってローカルに利用され、他の計算デバイスにおいて実行されるアプリケーションと同期されることが可能な、構成設定値および他のデーターを含むこともできる。つまり、これらの設定値はデバイスによって共有することができる。種々の他の例(instance)も考えられる。このため、計算デバイス102は、種々の異なるソースから種々の異なる方法でコンテンツと相互作用することもできる。加えて、アプリケーションは、オンラインのシナリオにおいても同様に機能し、例えば、USBデバイスからのコンテンツ全体をブラウズすることができる。
[0030] 動作において、独立ヒット・テスト・コンポーネント110は、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを供給する。独立ヒット・テスト・スレッドは、ウェブ・コンテンツに対するヒット・テストのために利用され、主スレッドに対するヒット・テストの影響を軽減する。ヒット・テストに別のスレッドを使用することにより、ターゲットを素早く確認することを可能にすることができる。パンニングおよびピンチ・ズーミングのようなタッチ操作に使用することができる操作スレッドのような別のスレッドによってしかるべき応答が処理される場合、操作は、主スレッドにおいてブロックすること(blocking)なく行うことができる。この結果、種々のシナリオにわたりロー・エンド・ハードウェアにおいてでも応答時間が常に短くなる。あるいはまたは加えて、独立ヒット・テスト・コンポーネント110は、1つ以上の入力シナリオを識別し、および/または代わりのスレッド(1つまたは複数)に、これらの入力シナリオが、これらの代わりのスレッドを介して関連する応答アクション(1つまたは複数)の少なくとも部分的な初期化を実行するのに有効であることを通知するように構成することができる。
[0031] 一般に、本明細書において説明する機能はいずれも、ソフトウェア、ファームウェア、ハードウェア(例えば、固定論理回路)、またはこれらの実現例の組みあわせを使用して実現することができる。「モジュール」、「機能」、「コンポーネント」、および「ロジック」という用語は、本明細書において使用する場合、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを一般に表す。ソフトウェアの実現例の場合、モジュール、機能、またはロジックは、プロセッサー(例えば、1つまたは複数のCPU)において実行されると、指定されたタスクを実行するプログラム・コードを表す。プログラム・コードは、1つ以上のコンピューター読み取り可能メモリー・デバイスに格納することができる。以下で説明する技法の特徴は、プラットフォーム独立であり、これらの技法は、種々のプロセッサーを有する種々の商用計算プラットフォームにおいて実現できることを意味する。
[0032] 例えば、計算デバイス102は、計算デバイス102のハードウェアまたは仮想マシンに動作を実行させるエンティティ(例えば、ソフトウェア)、例えば、プロセッサー、機能ブロック等を含むこともできる。例えば、計算デバイス102は、計算デバイス、そして更に特定すれば計算デバイス102のオペレーティング・システムおよび関連するハードウェアに動作を実行させる命令を維持するように構成することができるコンピューター読み取り可能媒体を含むのでもよい。つまり、命令は、オペレーティング・システムおよび関連するハードウェアを、動作を実行するように構成するように機能し、このようにして、機能を実行するようにオペレーティング・システムおよび関連するハードウェアを変形することになる。命令は、コンピューター読み取り可能媒体から計算デバイス102に、種々の異なる構成を介して供給することができる。
[0033] コンピューター読み取り可能媒体のこのような構成の1つに、信号支持媒体があり、つまり、ネットワークを介してというようにして、命令を計算デバイスに送信する(例えば、搬送波として)ように構成される。また、コンピューター読み取り可能媒体は、コンピューター読み取り可能記憶媒体としても構成することができ、したがって信号支持媒体ではない。コンピューター読み取り可能記憶媒体の例には、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)、光ディスク、フラッシュ・メモリー、ハード・ディスク・メモリー、ならびに磁気、光、および他の技法を使用して命令および他のデーターを格納することができる他のメモリー・デバイスが含まれる。
[0034] 以上、本明細書において説明する技法が動作することができる環境例について説明したので、これより、本明細書において説明する原理を利用することができるいくつかの実施形態例の説明(discussion)を検討する。
実施形態例
[0035] 以下の説明では、以下の用語を使用する。従属および独立領域の概念を導入する。
[0036] 「従属領域」とは、主スレッド、即ち、ユーザー・インターフェース・スレッドをヒット・テストのために利用するウェブ・コンテンツの領域である。従属領域は、<入力型=「範囲」>というような制御によって行われる入力または「ヒット」に関連付けることができ、ページとの相互作用は操作をトリガーしない。他の従属領域には、一例としてそして限定ではなく、選択ハンドラーに関連するもの、アドーナー(adorner)、スクロールバー、ならびにビデオおよびオーディオ・コンテンツ用のコントロール(control)を含むことができる。このような従属領域は、一例としてそして限定ではなく、ウィンドウレスActiveX制御も含むことができ、サードパーティ・コードの意図は知らされない。
[0037] 「独立領域」とは、主スレッドをヒット・テストのために利用する必要がないウェブ・コンテンツの領域である。独立領域は、通例、通常ユーザーによってパンニングまたはズーミングされる領域を含む。
[0038] 図2は、パンニング操作に関連する、シーケンス図例を全体的に200で示す。ユーザーは、後続のスライド動作でコンテンツをパンニングする「ポインター・ダウン」ジェスチャーの形態でジェスチャーを実行する。ポインター・ダウン・ジェスチャーには、任意の適したタイプの入力を供給することができる。例えば、図示する例では、ポインター・ダウン・ジェスチャーは、ユーザーが表示画面上に表示されたコンテンツにタッチし続け(touch-engaging)そして彼らの指を動かしてパンニングを実行することによって実行される。他のタイプの入力は、一例としてそして限定ではなく、マウス入力、スタイラス入力、自然ユーザー・インターフェース(NUI)入力等のような、入力デバイスから受けることができる。加えて、以下で説明するように、他の操作を処理することができる。このような他の操作には、特許請求する主題の主旨および範囲から逸脱することなく、一例としてそして限定ではなく、ピンチ・ズーム操作、ダブルタップ・ズーム操作、および他の操作を含むことができる。
[0039] この例では、3つの異なるスレッドを202、204、および206において例示する。独立ヒット・テスト・スレッド202は、以上および以下で説明するような独立ヒット・テストを行うために利用されるスレッドとなる(constitute)。操作スレッド204は、表示されたコンテンツに関連する独立領域に関して受け取られた入力に対して操作を実行するように構成されたスレッドとなる。ユーザー・インターフェース・スレッド206は、表示されたコンテンツに関連する従属領域に対する完全ヒット・テストのような種々の活動を実行するように構成された主スレッドとなる。
[0040] 1つ以上の実施形態では、独立ヒット・テストは次のように動作することができる。独立ヒット・テスト・スレッド202は、表示されたページにおいて、独立および従属である領域を知っている。操作スレッド204は、種々のタイプの入力に関連するメッセージを受けるために登録される代表スレッド(delegate thread)として機能するか、または代表スレッドを管理する。操作スレッド204は、入力メッセージを受け、ユーザー・インターフェース・スレッド206の前に更新する。独立ヒット・テスト・スレッド202は、操作スレッドから入力メッセージを受けるために、操作スレッド204に登録される。入力が受け取られると、操作スレッドは関連するメッセージを受け、同期通知を独立ヒット・テスト・スレッド202に送る。独立ヒット・テスト・スレッド202は、このメッセージを受け、その中に含まれるデーターを使用して、ヒット・テストを実行するために、関連する表示ツリーを探索する(walk)。表示ツリー全体を探索することができ、または以下で説明するように、範囲限定横断を行うこともできる。独立領域に関連して入力が発生した場合、独立ヒット・テスト・スレッド202は操作スレッド204をコールして、それがパンニングを開始できることを操作スレッドに知らせる。少なくともある実施形態では、従属領域に関連して入力が発生した場合、操作スレッド204は、完全ヒット・テストとしての処理のために、入力メッセージをユーザー・インターフェース・スレッド206に割り当て直す。入力メッセージをユーザー・インターフェース・スレッド206に割り当て直すと、再割り当てが行われるまで同じ待ち行列または位置にメッセージが維持され、したがってメッセージを待ち行列内で動かさずに留めるので、効率が上がる(carry)。独立ヒット・テストに基づく操作の対象ではない従属領域には、一例としてそして限定ではなく、スライダー・コントロール、ビデオ/オーディオ再生および音量スライダー、ActiveXコントロール、スクロールバー、テキスト選択グリッパー(および他のアドーナー)、およびオーバーフローのために設定されたページ(pages set to overflow)を含むエレメントに対応する領域が含まれる。
[0041] 少なくともある実施形態では、独立ヒット・テストを実行した後、または操作の開始中に、独立ヒット・テストを引き起こす(spawn)入力メッセージが、通常処理のためにユーザー・インターフェース・スレッド206に転送される。通常処理は、一例としてそして限定ではなく、種々のスタイルを入力の対象であるエレメントに適用することができる処理というような、基本的な相互作用に関連付けられる。これらの場合、入力メッセージをユーザー・インターフェース・スレッドに転送すると、操作スレッド204によって実行される操作をブロックしない。
[0042] 図2のシーケンス図に戻ると、アクションのシーケンスが示されており、その各々は、番号が入った円内に現れる。このシーケンスについて、パンニング操作のコンテキストで説明する。しかしながら、独立ヒット・テストは、ズーム操作等のような他の操作と併せて実行できることは認められてしかるべきであり、理解されよう。加えて、このシーケンス図の対象となる入力は、タッチ入力の形態となる。先に注記したように、特許請求する主題の主旨および範囲から逸脱することなく、他のタイプの入力も同様に受けて処理することができる。
[0043] 「1」において、ウェブページ上に現れたエレメントをユーザーがタッチし続けることに応答して、フィンガー・ダウン・イベントが行われ、続いてポインター・ダウン入力メッセージが出る。ポインター・ダウン入力メッセージは、操作スレッド204によって受け取られ待ち行列に入れられる。次いで、ポインター・ダウン入力メッセージは、操作スレッド204によって独立ヒット・テスト・スレッド202に送られる。独立ヒット・テスト・スレッド202は、「2」において、ポインター・ダウン入力メッセージを受ける。これは、ポインター・ダウン入力メッセージはユーザー・インターフェース・スレッド206に送られ、前述のように、ユーザー・インターフェース・スレッド206が実行しているかもしれない他の処理のために遅れが生ずる可能性がある過去の慣例からの新たな試みとなる。ポインター・ダウン入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッド202は、「3」において、関連する表示ツリーを探索することによって、独立ヒット・テストを実行する。独立ヒット・テスト・スレッド202が、フィンガー・ダウン・イベントに対応する領域が独立領域であることを確認し、ユーザー・インターフェース・スレッド206は操作を行うためには必要とされないことを意味する場合、独立ヒット・テスト・スレッド202は、操作スレッドをコールして、直接操作を行うことができることを操作スレッドに知らせる。操作スレッドは、「4」において、この例ではパンニング操作である操作を開始する。また、独立ヒット・テスト・スレッド202は、「3」において、ユーザー・インターフェース・スレッド206をコールするので、このユーザー・インターフェース・スレッドは、「5」において、完全ヒット・テストを実行し、このようなことを、CSSスタイルおよび他のDOM関係処理を適用するように、行うことができる。独立ヒット・テスト・スレッドが、フィンガー・ダウン・イベントに対応する領域が従属領域であると確認した場合、独立ヒット・テスト・スレッドは、直接操作のために操作スレッドをコールしない。代わりに、入力メッセージが、操作スレッドによって、処理のためにユーザー・インターフェース・スレッドに割り当て直される。領域が独立領域であると仮定すると、「6」において、操作スレッド204の影響下で、ユーザーの指が動くのに応じて、操作は続けられる。操作スレッド204は、「7」において、フィンガー・アップ・イベントに応答して操作を終了する。
[0044] 尚、独立ヒット・テスト・スレッド202がないと、ポインター・ダウン入力メッセージは、操作が開始できる前に完全ヒット・テストを処理し実行するために、ユーザー・インターフェース・スレッド206に送られることを注記しておく。ユーザー・インターフェース・スレッド206が実行しているかもしれない他の処理のために、操作を目的とする完全ヒット・テストが遅れることもあり得る。したがって、破線の矢印208によって示されるように、完全ヒット・テストの終了後に、操作が開始される。この結果、両頭矢印によって示されるように、独立ヒット・テスト・スレッドの影響下において操作が開始されるときと、独立ヒット・テスト・スレッドの影響がなく操作が開始されるときとの間に、対応する遅れが生ずる。したがって、操作応答時間が改善され、ユーザー・インターフェース・スレッド206における活動に関係なく、常に素早くなる。
[0045] 以上、1つ以上の実施形態によるシステム例について検討したので、これより、1つ以上の実施形態による方法例について検討する。
方法例
[0046] 図3は、1つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組み合わせにしたがって実現することができる。少なくともある実施形態では、この方法は、独立ヒット・テスト・スレッドを含むシステムというような、適切に構成されたシステムによって実現することができる。
[0047] ステップ300では、入力を受ける。任意の適したタイプの入力を受けることができる。少なくともある実施形態では、入力はタッチ入力を含む。特許請求する主題の主旨および範囲から逸脱することなく、他のタイプの入力を受けることもできる。ステップ302では、入力に関連する入力メッセージを受ける。このステップは、任意の適した方法で実行することができる。少なくともある実施形態では、入力メッセージは、操作スレッドによって受け取られ、待ち行列内に置かれる。ステップ304では、入力メッセージを独立ヒット・テスト・スレッドに送る。入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッドは、独立ヒット・テストを実行する。ステップ308では、完全ヒット・テストを実行するために、ユーザー・インターフェース・スレッドをコールする。これをどのようにそして何故することができるかという例は、先に示した。ステップ310では、入力に関連する領域が独立領域であるか否か確認する。この領域が独立領域であると確認された場合、ステップ312において、直接操作のために操作スレッドをコールする。どのようにこれを行うことができるのかという例は、先に示した。他方で、この領域が独立でない、即ち、従属であると確認された場合、ステップ314において、処理のために入力メッセージをユーザー・インターフェース・スレッドに割り当て直す。
独立ヒット・テストのための範囲限定ツリー横断の使用
[0048] 1つ以上の実施形態において、範囲限定ツリー横断は独立ヒット・テストの間に実行することができる。これらの場合、独立ヒット・テストは、しかるべき応答を決定するために完全ツリー横断を行う必要はない。むしろ、これらが独立ヒット・テストに関して無関係であると確認されたときは、対応する表示ツリーの部分を飛ばすことができる。
[0049] 少なくともある実施形態では、表示ツリーのエレメントに、これらのエレメントが独立ヒット・テストの間に横断されるように印を付けることができる。あるいは、表示ツリーのエレメントに、印されたエレメントは独立ヒット・テストの間横断されないように、印を付けることができる。このように、表示ツリーに印を付けることによって、独立ヒット・テストの間エレメントを横断するか否か判断することができる。
[0050] 例えば、表示ツリー内には、表示ツリー内におけるそれらの機能のために、自然にヒット・テストを行うのに適していないエレメントの特性およびプロパティがある。それらの場合、これらのエレメントがヒット・テストされないように、これらに印を付ける。具体的な例では、表示ツリーにおけるあるエレメントが、それらのプロパティおよび特性のために、表示クライアントによって処理される場合がある。このようなエレメントは範囲コントロール(range control)を含むことができる。これらの場合、範囲コントロールに対応する表示ノードは、コンテナ(container)であり、コントロールの部分に対応するいくつかのノードをその下に有する。しかしながら、範囲コントロール自体は、ユーザー・インターフェース・スレッドにおけるタッチ入力の特殊処理を行うので、その処理を行うために表示クライアントを実装し、その表示ノードには横断せず(not-for-traversal)という印を付ける。このように、表示ノードが独立ヒット・テスト・スレッドに遭遇したとき、範囲コントロールの下にあるノードの横断を飛ばす。
独立ヒット・テストのための表示ツリー・ノードの特定領域の指定
[0051] 少なくともある実施形態では、表示ツリー・ノードの特定領域を、独立ヒット・テストの間考慮のために指定することができる。この手法は、1つの表示ツリー・ノードが、しかるべき操作応答についての判断を変更する可能性がある対象の下位領域を有する場合に使用することができる。下位領域の例には、一例としてそして限定ではなく、ビデオ・エレメントにおける再生スライダー、または編集可能なコンテンツ上におけるサイズ変更グリッパーが含まれる。
[0052] あるコンテンツを内部に有する矩形の形態をした表示ツリー・ノードについて検討する。表示ツリー・ノードの一例は、ビデオ・コンテンツを含むものであってもよい。ユーザーがこの表示ツリー・ノードに対応する領域にタッチすると、早送り、一時停止、音量等というようなコントロールが現れるのでもよい。通常、早送り、一時停止、またはビデオの音量の調節によってというような、通常の普通の方法で、特定のビデオ・コントロール上のコンタクト(contact)を処理することが望ましい。通常、これらのコントロールが見えるとき、これらのタイプの入力はユーザー・インターフェース・スレッドによって処理される。しかしながら、ビデオ・コンテンツに対応する表示エレメントのパンニングおよびズーミングというような操作は、独立ヒット・テストを使用して、独立して行うことができる。この場合、コントロールが見えるとよく、受け取られる入力は、ビデオ上におけるピンチまたはパンニング入力を含み、独立ヒット・テスト・スレッドが入力メッセージを処理して対応する操作に作用する結果となる。
[0053] 1つ以上の実施形態では、別のデーター構造が、これらのタイプのエレメントに対応する表示ツリーの一部として維持される。この別のデーター構造は、これらのタイプの表示ツリーについての情報を維持する。受け取られる入力に依存して、例えば、入力がビデオ・コントロール上で行われる場合にはユーザー・インターフェース・スレッドが入力メッセージを処理し、あるいはパンニングまたはズーミングが行われるときは、独立ヒット・テスト・スレッドおよび操作スレッドがこれらのエレメントに関して入力を処理する。
独立ヒット・テストに対する応答の一部として実行されるコールバック・ハンドラーの登録
[0054] ユーザーが、彼らのウェブ・ブラウザーによって表示されたコンテンツに関して左または右にパンニングする状況について検討する。右にパンニングすることは、ブラウザーにおいて後ろにナビゲートするために後ろボタンをクリックすることと等価である。したがって、ユーザーは種々のページにわたって前後にめくることができる。これによって、ユーザーはナビゲーションに関連するトラベル・ログ(travel log)にわたって前後にナビゲートすることが可能になる。この場合では、コンテンツ全体にわたる前方および後方へのナビゲーションは、独立ヒット・テスト・スレッドとは異なるコンポーネントによって処理される。これらの場合、前方および後方へのナビゲーションを処理するコンポーネントは、独立ヒット・テストに対する応答の一部として、コールバックのために登録することができる。
[0055] 例えば、I−フレームおよび対応するウェブページについて検討する。パンニング操作に応答して、最初にI−フレームがエッジに当たるまでパンニングし、その時点でページがパンニングし始める。一旦ページがそのエッジに当たると、逆向きナビゲーションを開始することができる。実行されるコールバック・ハンドラーを、独立ヒット・テストに対する応答の一部として登録することによって、ホストはこのチェーンに関与することができる。例えば、フィンガー・ダウン入力を受けたとき、その入力に関連する表示ツリーの、上に向かってスクロール可能な領域全てのリストが作られる。したがって、例えば、ユーザーが10個のスクロール可能なエリアである領域上において深くタッチした場合、独立ヒット・テスト・スレッドは、これら10個のスクロール可能なエリアの各々に対して操作を行うことができるように、操作スレッドをコールすることができる。コールバック・ハンドラーを独立ヒット・テストに対する応答の一部として使用することによって、前後のナビゲーションを処理するコンポーネントが、これら10個の領域の上に積層し、しかるべく前方および後方へのナビゲーションを実行することを可能にすることができる。
デフォルト行動についての宣言型スタイル・ルール(Declarative Style Rules)
[0056] 少なくともある実施形態では、ウェブ開発者が、彼らのウェブページ上において、タッチ行動のような特定のデフォルト行動を要求するためのメカニズムが設けられる。少なくともある実現例では、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作を有効または無効にするために、カスケード・スタイル・シート・ルール(Cascading Style Sheets rule)が利用される。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言され、したがって、命令型モデルを採用するソリューションとは異なる。この手法の宣言型の性質により、主スレッドからの完全独立の達成、および独立ヒット・テストを使用して正しい応答を判断することが可能になる。
[0057] 1つ以上の実施形態において、タッチ・アクションのようなデフォルト・アクションを制御する能力が、新たなCSSプロパティ「タッチ・アクション」の使用によって設けられる。CSSプロパティは、一例としてそして限定ではなく、"auto"、"none"、および"inherit"を含む値を受け入れる。加えて、CSSプロパティは、タッチ・アクションのような、利用することができる特定のアクションの空間限定リスト(space delimited list)の使用を可能にする限り、拡張可能である。一例としてそして限定ではなく、このリストは、それぞれ、パンニング/ピンチ・ズームおよびダブルタップ・ズームを制御するための"manipulation"および"double-tap-zoom"という値を含む。この特徴によって有効または無効にすることができる追加の能力を追加することができ、こうしてこのプロパティに対する拡張性を追加することができる。
[0058] 1つ以上の実施形態において、独立ヒット・テスト後における正しい応答は、タッチ相互作用を処理することができるターゲットの最初の先祖(ancestor)がそうすることである。操作に対して、これは、実際に操作可能な領域、即ち、スクロール可能またはズーム可能として指定された領域、更にはJavaScriptを介して相互作用を処理することを選択するエレメント、例えば、"touch-action: none"を含むことができる。また、これは、それら自体の操作応答を有するある種のエレメント、例えば、スライダーも含むことができる。
[0059] 動作において、ユーザーの指の下にあるウェブページ上の特定のエレメントを判定する独立ヒット・テストの間、対応する表示ツリーが、部分的にこのCSSプロパティに基づいて横断される。これによって、正しい応答を決定するために追加の情報を必要としない場合に、ツリー横断の範囲制限(scoping)が可能になる。
[0060] 以上、デフォルト行動についての宣言型スタイル・ルールの全体像を検討したので、これより以上で説明した技法を採用する実現例(implementation example)の説明について検討する。
実現例
[0061] 以下の説明では、以下の用語を使用する。操作可能エレメント(manipulable element)とは、(a)オーバーフロー・コンテンツを有し、オーバーフローが自動的に処理されることを指定するエレメント、(b)オーバーフロー・コンテンツに対してスクローリングが許されることを指定するエレメント、または(c)ズーミング能力を有するエレメントのいずれかである。操作ブロック・エレメント(manipulation-blocking element)とは、宣言型マークアップによって直接操作を明示的にエレメントし、代わりに、ジェスチャー開始、ジェスチャー変更、およびジェスチャー終了イベントというようなジェスチャー・イベントを発火させるエレメントである。操作発生エレメント(manipulation-causing element)とは、宣言型マークアップによって直接操作を明示的に要求するエレメントである。受動型エレメントとは、以上の3つのカテゴリーに該当しないエレメントである。これは、タッチ・アクションの判断に寄与しない。
[0062] CSSプロパティ「タッチ・アクション」に関して、以下のことを検討する。「タッチ・アクション」プロパティは、宣言型マークアップを使用してウェブ開発者によって設定することができる次の値を含む。auto、none、inherit、および<space-delimited gesture list>。空間限定ジェスチャー・リストは、「操作」および「ダブルタップ・ズーム」を含むことができる。また、空間限定ジェスチャー・リストは、今後追加されるジェスチャーをサポートするために拡張可能である。
[0063] "auto"値は、タッチ・アクション判断を特定のエレメントの親に譲り、こうして特定のエレメントを受動型エレメントにする。したがって、例えば、タッチ入力があるエレメント上において行われ、このエレメント自体はパンニングすることができずパンニング操作をブロックしていない場合、タッチ・アクション判断はこのエレメントの親に譲られる。これは、タッチ・アクション判断が解明されるまで、エレメントの先祖のチェーンを遡り続けることができ、その結果、操作するまたは操作しないといういずれかの結果が得られる。この値は、表示ツリー・チェーンにおいてあらゆるエレメント毎にプロパティを指定しなければならない負担を軽減することができる。
[0064] "none"値は、このエレメントではパンニングもズーミングの行われないことを指定する。
[0065] "inherit"値は、標準的なCSS継承の通りに、エレメントがそのプロパティ値をその親から受け継ぐことを指定する。
[0066] "manipulation"値は、関連するエレメントが、操作発生エレメント、即ち、直接操作を明示的に要求するエレメントとして扱われることを指定する。したがって、このエレメントはパンニングおよび/またはズーミングを行い、ジェスチャー・イベントは発火しない。
[0067] "double-tap-zoom"値は、関連するエレメントが、操作ブロック・エレメントとして扱われることを指定し、このエレメントが明示的に直接操作をブロックし、代わりにジェスチャー・イベントを発火させることを意味する。この場合、"double-tap-zoom"だけがエレメントに指定される場合、このエレメントはパンニングもピンチ・ズームも行わない。尚、あるエレメントに対して"manipulation"は指定されるが"double-tap-zoom"は指定されない場合、このエレメントをパンニングおよびピンチ・ズーミングすることだけが可能になる。
[0068] 動作において、ターゲット・エレメントの親チェーンにおける最初の操作可能エレメントまたは操作ブロック・エレメントに操作が割り当てられる。エレメントが操作可能および操作ブロックの双方である場合、直接操作は行われず、操作ブロックが発生することを意味する。目標エレメントの親チェーンに操作可能エレメントも操作ブロック・エレメントもない場合、操作イベントは送られるかまたは発火される。
[0069] ここで、以上の値が独立ヒット・テストの間にどのように処理されるかについて検討する。表示ツリーが特定のページに対して最初に作られるとき、以上で説明したプロパティ値に遭遇した場合、プロパティ値が指定された特定のエレメントに対応する表示ツリー・ノード毎に、フラグがプッシュされる。つまり、各表示ツリー・ノードは、それと共に、以上で説明したプロパティ値によって定められるその状態を伝える。
[0070] 独立ヒット・テストの間、表示ツリーを探索し、これらのフラグを蓄積して、独立ヒット・テスト・スレッドが操作スレッドを直接操作のためにコールすべきか否か確認する。これらのフラグは、本質的に先に説明したように積み重ねられ、次いでページまたはコンテンツがどのようにパンニングするか、ズーミングするか、または操作されるか最終的に決定するビューポート(viewport)に割り当てられる。このように、ヒット・テスト結果に基づいてその場で操作を構成することができる。一旦独立ヒット・テストが完了し、構成が確認されたなら、独立ヒット・テスト・スレッドは、直接操作のために、操作スレッドに対してしかるべきコールを行うことができる。
[0071] 図3aは、1つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、開発者がウェブページを開発することを可能にするソフトウェアを含む、適切に構成されたウェブページ開発システムによって実現することができる。
[0072] ステップ320において、ウェブページを組み立てる。このステップは、適切に構成された任意のウェブページ開発ソフトウェア・パッケージを使用して、任意の適した方法で実行することができる。ステップ322では、1つ以上のプロパティをウェブページのエレメントに割り当てて、1つ以上のそれぞれのデフォルト・タッチ行動を要求する。これをどのように行うことができるかの例は、以上で示した。
[0073] 図3bは、1つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、コンポーネントの中でもとりわけ、以上で説明したような独立ヒット・テスト・コンポーネントを含むシステムというような、適切に構成されたシステムによって実現することができる。
[0074] ステップ330において、ウェブページを受ける。ステップ332では、このウェブページに関連する表示ツリーを組み立てる。ステップ334では、デフォルト・タッチ行動が指定されたエレメントに対応する表示ツリー・ノードに少なくとも1つのフラグを設定する。これをどのように行うことができるかの例は、先に示した。ステップ336では、表示ツリーに対して独立ヒット・テストを実行する。これをどのように行うことができるかの例は、先に示した。ステップ338では、デフォルト・タッチ行動が指定された1つ以上のエレメントに対する直接操作のために、操作スレッドをコールする。これをどのように行うことができるかの例は、先に示した。
[0075] 以上、実現例について検討したので、これより種々の入力ジェスチャーを識別し処理するための代替実施形態の説明について検討する。
タッチパッドおよびダブルタップ・ズームの検討
[0076] 以上で説明した技法を使用すると、とりわけ、独立ヒット・スレッドは、コンテンツ内に含まれる独立領域および従属領域を識別し、更にこれらの領域に関係するアクションの並列処理を可能にするように構成することができる。例えば、独立ヒット・スレッドは、独立領域を識別し、関連する処理を操作スレッドに引き渡すように構成することができる。代わりにまたは加えて、独立ヒット・スレッドは、従属領域を識別し、ユーザー・インターフェース・スレッドのような、関連する従属性を管理するスレッドに処理を引き渡すように構成することができる。処理を異なるスレッドに分散することによって、以前では実行ボトルネックのために遅れていた操作を、一層適時に処理することができ、ボトルネック・アーキテクチャよりも応答が良いユーザー・インターフェースが得られる。しかしながら、多重ジェスチャー入力を識別するときに遅れを生ずる可能性がある場合もある。
[0077] 例えば、ダブルタップ・ズームについて検討する。その名称によって示されるように、ある実施形態は、ダブルタップ入力がダブル・マウス・クリックに関連するか、ダブルタップ入力がタッチ・スクリーンに関連するか、タッチパッド上のダブルタップか等にしたがって、ダブルタップ入力を識別したことに応答して、ズーム機能を呼び出す。一旦シーケンスにおいて2つのタップが識別されたなら、ズーミング機能を呼び出すことができる。しかしながら、多重ジェスチャーの2回目のタップが識別されるまで、最初のタップに関連する不確実性があり、それを独立入力(例えば、1回のタップ選択入力)として解釈すべきか、または多重ジェスチャー入力(例えば、ダブルタップ・ズーム)の一部として解釈すべきか不確実性がある可能性がある。この最初のタップを識別するときの不確実性は、次に、最初のタップの関連する役割(例えば、独立入力または多重ジェスチャー入力)が識別されるまで、応答性に遅れを生じさせる可能性がある。例えば、タップ入力が1回の入力および/または独立入力に関連する場合、可能な2回目のタップおよび/または時間切れを待つときの遅れはいずれも、その待ち期間におけるユーザーの知覚に影響を及ぼす可能性がある。
[0078] ある実施形態は、入力を1回の入力および/または独立入力として解釈する、入力を多重ジェスチャー入力として解釈する等のように、入力に関連する1つ以上の入力シナリオを識別するように構成された独立ヒット・テスト・スレッドを与える。場合によっては、各入力シナリオは、少なくとも部分的に開始できるおよび/または初期化のために別のスレッドに渡すことができる、関連する応答アクションを有する。部分的に初期化された応答アクションは、一例としてそして限定ではなく、先に詳しく説明したように、オブジェクトおよび/または表示操作を含むことができる。完全な応答アクションを 呼び出すことができるのは、以上および以下で更に説明するように、入力が、1つ以上の応答アクションからの別個の応答アクションによって、別個の入力として識別されたときである。
[0079] 図4について検討する。図4は、ダブルタップ・ズームに関連するシーケンス図の例を、全体的に400で示す。ここでは、ユーザーは、タッチ・スクリーンによって検出される2つの別の「フィンガー・ダウン−フィンガー・アップ」ジェスチャーの形態で、多重ジェスチャー入力を実行する。しかしながら、任意の適したタイプの入力を「フィンガー・ダウン−フィンガー・アップ」ジェスチャーに対して供給できることは認められよう。その例は、以上で与えられており更に以下でも与えられる。更に、ダブルタップ・ズームおよびその関連するダブルタップの多重ジェスチャー入力のコンテキストで説明したが、本明細書において説明した技法は、特許請求する主題の範囲から逸脱することなく、任意の多重ジェスチャー入力に適用可能であることは認められよう。
[0080] ここでは、全体的に400で説明されるシーケンス図は、図2を参照して先に説明したように、独立ヒット・テスト・スレッド202、操作スレッド204、およびユーザー・インターフェース・スレッド206を含む。「1」において、フィンガー・ダウン−フィンガー・アップ・イベントが、ウェブページ上に現れたエレメント上におけるユーザー・タップの検出に応答して行われる。これは、操作スレッド204によって受け取られ、待ち行列に入れられる。次いで、タップ入力メッセージが独立ヒット・テスト・スレッド202に送られ、「2」において受け取られる。タップ入力イベントの通知を受けるというコンテキストで説明したが、任意の他の適したタイプのイベントも同様に識別できることは認められよう。例えば、フィンガー・ダウンおよびフィンガー・アップの多重入力イベントを含むタップ・イベントを識別する代わりに、ある実施形態は、フィンガー・ダウン・イベントおよびフィンガー・アップ・イベントを別々に識別し、ポインター・ダウン・イベント・メッセージおよびポインター・アップ・イベント・メッセージというような、別々の入力メッセージを送る。
[0081] 「2」においてタップ入力メッセージを受けると、独立ヒット・テスト・スレッドは、「3」において、前述のような表示ツリー横断、および/または多重ジェスチャー入力分析というような、1つ以上のアクションを開始する。この例では、独立ヒット・テスト・スレッド202は、1回のタップ入力または多重ジェスチャー入力の一部であるというように、タップ・イベントを複数の方法で解釈できることがわかるロジックおよび/または知識を含む。つまり、独立ヒット・テスト・スレッド202は、ここでは「4」で示す、1回のタップ入力の通知として、メッセージを送る、および/またはユーザー・インターフェース・スレッド206にコールする。あるいはまたは加えて、ユーザー・インターフェース・スレッド206は、イベント通知を受けることができる。ある実施形態では、ユーザー・インターフェース・スレッド206に対する通知は、1回のタップ入力が別個に識別されなかったこと、そして潜在的にそれを複数の方法で解釈できることを示す情報を含むことができる。言い換えると、1回のタップ入力は、入力であるという潜在的な解釈として識別されるが、最終的なおよび/または紛れもない解釈ではない。これは、ユーザー・インターフェース・スレッド206によって受け取られるメッセージ内に情報を含ませることによって、ユーザー・インターフェース・スレッド206へのコールの間に渡されるパラメータ(1つまたは複数)によって、独立ヒット・テスト・スレッド202とユーザー・インターフェース・スレッド206との間で共有するデーター構造内に情報を格納することによって等を含む、任意の適したやり方で行うことができる。1回のタップ入力を潜在的な解釈として識別したことに応答して、ユーザー・インターフェース・スレッド206は、関連する応答アクションの部分的初期化を実行する。
[0082] 「4」において、ユーザー・インターフェース・スレッド206は、部分的初期化を実行する。これは、任意の適したタイプのアクションを含むことができ、その例は先に示した。例えば、CSSルールについての先の説明を引用すると、部分的初期化は、ユーザー・インターフェース・スレッド206によって表示される1つ以上のエレメントの外観を変えるのに有効な、1つ以上のエレメントに関連する1つ以上のCSSルールを処理することを含むことができる。あるいはまたは加えて、ユーザー・インターフェース・スレッド206は、JavaScriptのような関連するスクリプトを実行することができる。このように、ユーザー・インターフェース・スレッド206は、少なくとも部分的に、1タップ入力を受けたことに関連する応答アクションの処理を開始する。
[0083] 「5」において、操作スレッド204は、第2タップ・イベントの通知を受ける。先の場合と同様、次いで、操作スレッド204はメッセージおよび/または通知を独立ヒット・テスト・スレッド202に渡す。「6」において、独立ヒット・テスト・スレッド202は第2タップ・イベントの通知を受ける。「7」において、独立ヒット・テスト・スレッド202は、第1タップ・イベントおよび第2タップ・イベントの組み合わせを多重ジェスチャー入力(例えば、ダブルタップ)として識別する。多重ジェスチャー入力の識別は、任意の適したやり方で行うことができる。例えば、第1タップ・イベント通知を受けたときに、予め定められた時間枠内で第2タップ・イベントが発生したか否か判定するのに有効なタイマを起動することができる。あるいはまたは加えて、各タップ・イベントにタイム・スタンプを付けることができ、第1および第2タップ・イベント間の時間の尺度(measure)を計算し、閾値と比較することができる。このように、独立ヒット・テスト・スレッド202は、第1タップ・イベントに関連付けることもできる入力の複数の可能な解釈(例えば、1回のクリック、ダブルタップ、タップおよび保持等)から、第1および第2タップ・イベントの組みあわせを多重ジェスチャー入力(例えば、ダブルタップ)として識別する。
[0084] 第1および第2タップ・イベントの解釈を明確に識別するとき(例えば、ダブルタップ入力として明確に識別する)、次に、独立ヒット・テスト・スレッド202は、部分的に初期化され得た他の解釈応答アクションがあるか分析する。例えば、「3」において、1タップ入力応答アクションが、ユーザー・インターフェース・スレッド206において少なくとも部分的に初期化されている。次いで、独立ヒット・テスト・スレッド202は、部分的に応答アクションを初期化したスレッドに通知を送る。あるいはまたは加えて、独立ヒット・テスト・スレッド202は、それ自体のスレッド内において管理される、任意の部分的に初期化された応答アクションを終了することができる。この例では、独立ヒット・テスト・スレッド206は、ユーザー・インターフェース・スレッド206に、1タップ入力応答アクションの処理を終了および/または停止するためのメッセージを送る。これは、「8」に示され、ユーザー・インターフェース・スレッド206は取り消し通知を受ける。尚、特許請求する主題の範囲から逸脱することなく、任意の適したタイプの通知を使用できることは認められよう。例えば、先の共有データー構造の例に戻ると、ある実施形態では、ユーザー・インターフェース・スレッド206は通知および/または終了要求の識別のために、共有データー構造にアクセスすることができる。「8」において通知を受けたことに応答して、ユーザー・インターフェース・スレッド206は、「4」において実行された任意の以前のアクションを終了するおよび/または元に戻す(reverse)。
[0085] 「9」において、独立ヒット・テスト・スレッド202は、多重ジェスチャー入力の通知を操作スレッド204に送る。ここで、この通知は、独立ヒット・テスト・スレッド202が、任意の関連するエレメントおよび/またはアクションを、先に説明したように、操作スレッド204によって管理および/または処理できると判定したことに応答して、操作スレッド204に送られる。「10」において、操作スレッド204は、任意の適したやり方でこの通知を受ける。その例については、先に説明した。図4は、独立ヒット・テスト・スレッド202が、最初にユーザー・インターフェース・スレッド206に以前の応答アクション(例えば、1タップ入力応答アクション)を取り消す通知を送り、次いで操作スレッド204に多重ジェスチャー入力の通知を送ることを示すが、これらのイベントのシーケンスは、特許請求する主題の範囲から逸脱することなく、任意の順序で行うことができることは認められてしかるべきであり、理解されよう。「11」において、操作スレッドは、多重ジェスチャー入力(例えば、ダブルタップ・ズーム)に対して、関連する応答アクションを処理および/または実行する。
[0086] 簡素さのために、図4は、多重ジェスチャー入力を判定し、多数の可能な応答間で調整する(stagger)ことに関するタイムラインを説明するシーケンス図を示す。例えば、「1」において第1タップが検出されたとき、第1タップが単一ジェスチャー入力であることに関係する部分的応答アクションが初期化される(ここでは、「3」または「4」において示される)。第2タップが「5」において検出されるまでは、多重ジェスチャー入力が多重ジェスチャー入力として認識されない。この時点において、多重ジェスチャー入力応答アクションが初期化され、単一ジェスチャー入力は「7」または「8」において終了させられる。しかしながら、ある実施形態では、多重ジェスチャー入力が決して行われないと判定したときというように、後の時点において、部分的応答を完全に初期化することができる。多重ジェスチャー入力がないという判定は、タイムアウト・タイマの使用によるというように、任意の適したやり方で行うことができる。図4に関して、「5」におけるイベントが所定の時間閾値内に行われない場合、多重ジェスチャー入力は認識されない。一方、これは、単一ジェスチャー入力に関連する、任意の部分的に初期化された応答アクションを完了するメッセージをトリガーすることができる。あるいはまたは加えて、「3」において開始された単一ジェスチャー応答アクションは、「5」においてイベントがないために(そして、その後「7」および「8」における終了メッセージのために)、完了まで実行する完全初期化(部分的初期化の代わりに)になることができる。
[0087] 他の例として、図5について検討する。図5は、ダブルタップ・ズームに関連するシーケンス図を全体的に500で示す。図4の場合と同様、図5は、ユーザーが2つの別の「フィンガー・ダウン−フィンガー・アップ」ジェスチャーの形態で多重ジェスチャー入力を実行することに関連する。更に、図5は、先に図2および図4を参照して説明したように、独立ヒット・テスト・スレッド202、操作スレッド204、およびユーザー・インターフェース・スレッド206を含む。「1」において、ユーザーがウェブページ上に現れたエレメントにタッチし続けることに応答して、「フィンガー・ダウン−フィンガー・アップ」イベントが行われ、それによってタップ入力メッセージを引き起こす。これは、操作スレッド204によって受け取られ、待ち行列内に入れられる。次いで、タップ入力メッセージが独立ヒット・テスト・スレッド202に送られ、前述したのと同様に、「2」において独立ヒット・テスト・スレッド202によって受け取られる。しかしながら、ここでは、図5においてイベントが受け取られるタイミングの差によって、多少異なる行動が呼び出される。
[0088] 独立ヒット・テスト・スレッド202が第1タップ入力メッセージを処理し部分的初期化を実行するために通知をユーザー・インターフェース・スレッド206に送る前に、「3」において第2タップ入力メッセージが操作スレッド204によって受け取られる。一方、操作スレッド204は、独立ヒット・テスト・スレッド202に通知を送り、この通知は「4」において受け取られる。ユーザー・インターフェース・スレッド206は、部分的初期化メッセージを未だ独立ヒット・テスト・スレッド202から受けていないので、独立ヒット・テスト・スレッド202は、このシーケンスのイベントに対して全ての部分的初期化メッセージをユーザー・インターフェース・スレッド206に送るのを回避する。代わりに、「5」において、独立ヒット・テスト・スレッド202は、2つのタップ入力メッセージを、ダブルタップ・ズーム機能に関連する多重ジェスチャー入力であるとして識別する。次いで、ダブルタップ・ズームおよび/または多重ジェスチャー入力の通知が独立ヒット・テスト・スレッド202によって送られ、「6」において操作スレッド204によって受け取られる。「7」において、操作スレッド204は、先に説明したように、ダブルタップ・ズームを実行する。
[0089] このように、独立ヒット・テスト・スレッドは、操作および/または関連するコンテンツが独立かまたは従属か判定できるだけでなく(そして、どのスレッドがコンテンツに関連する機能を処理するのか管理する)、単一入力ジェスチャーと多重入力ジェスチャーとの間で区別する機能および/またはロジックを含むことができる。場合によっては、追加のロジックは、米国特許出願第13/363,127に記載された入力ポインター遅延および/またはズーミング・アルゴリズムのような、アルゴリズムを含むことができる。これらのアルゴリズムは、パラメーターおよび/またはオプションを識別するために使用することができ、次いでこれらは操作スレッドに伝えられる。例えば、これらのアルゴリズムは、どのコンテンツがズームによって拡大されるのかに基づいて、ズーム比を決定するために使用することができる。次いで、これらのズーム比は、ズーミング・プロセスの一部として、操作スレッドに渡すことができる。
[0090] ともすれば、独立ヒット・テスト機能をイネーブルおよびディスエーブルすることが有効である場合もあり得る。例えば、タッチパッドについて検討する。ある実施形態では、ユーザーがタッチパッドと相互作用するとき、入力は、マウス周辺デバイスの入力と同様に解釈することができる。この「マウス・モード」にあるとき、ユーザーはタッチパッド・インターフェースにタッチし、タップによってエレメント上で「クリックし」、インターフェースに対するタッチ・コンタクトを維持し、所望の方向に滑らせる等によって、表示されたマウス・ポインターを動かすことができる。しかしながら、あるシナリオでは、ヒット・テストをイネーブルすることが望ましい場合もあり得る。パンニング機能に関する先の説明について検討する。ともすれば、パンニング機能を処理するとき、しかるべき操作目標を判定するためにヒット・テストを実行することが有益である場合もあり得る。ある実施形態では、「ジェスチャー・モード」に(およびから)移行する能力を設ける。例えば、ある場合には、多重ジェスチャー入力を検出することによって、タッチパッド上における複数の同時フィンガー相互作用を検出するというような、「ジェスチャー・モード」をイネーブルする。「ジェスチャー・モード」に移るとき、先に説明した技法と同様の独立ヒット・テスト・スレッド技法を使用して、入力を処理および/または分析することができる。あるいはまたは加えて、新たなルールを適用することができ、および/または「マウス・モード」におけるときとは異なって入力を解釈することができる。例えば、「マウス・モード」にあるとき、タッチパッドを横切る指に関連する入力を検出すると、指の動きと関係する方向にマウス・アイコンを動かす応答アクションを呼び出すことができる。しかしながら、「ジェスチャー・モード」にあるときに同様の入力を検出すると、代わりに、関連する表示を左または右にパンニングさせる応答アクションを呼び出すことができる。「スワイプ」ジェスチャーに関連する第2入力と関連付けられた「タッチ・アンド・ホールド」(タッチし続ける)ジェスチャーに関連する第1入力を検出する、ジェスチャーの欠如を検出する(例えば、「タッチ・アンド・ホールド」ジェスチャーおよび/または「スワイプ」ジェスチャーがないことを検出する)等というような、任意の適したタイプのイベントおよび/または入力が、「ジェスチャー・モード」への(そしてからの)移行を発生させることができる。ある実施形態では、「ジェスチャー・モード」に関連する多重ジェスチャー入力の終了、「マウス・モード」への移行に関連する別個の入力の検出等というような、マウス・モード入力イベントを検出すると、「マウス・モード」に戻る。
[0091] 図6は、1つ以上の実施形態による方法におけるステップを説明する流れ図である。この方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはその組みあわせと関連付けて実現することができる。少なくともある実施形態では、この方法は、とりわけ、以上で説明したような独立ヒット・テスト・コンポーネントを含むシステムというような、適切に構成されたシステムによって実現することができる。
[0092] ステップ600では、第1入力に関連する第1入力メッセージを受ける。これは、任意の適したタイプの入力メッセージおよび/または、タッチ・スクリーン、タッチパッド、マウス・デバイス、キーボード入力等からの入力というような、入力を含むことができる。ある場合には、ユーザー・インターフェース・スレッドおよび/または独立ヒット・テスト・スレッドとは別のスレッドにおいて、第1入力メッセージを受けることもある。ステップ602では、第1入力メッセージを独立ヒット・テスト・スレッドに送る。
[0093] 第1入力メッセージを受けたことに応答して、ステップ604では、第1入力メッセージに関連する第1入力が複数の解釈を有すると判定する。例えば、第1入力は、単一ジェスチャー入力として解釈することができ、または1つ以上の多重ジェスチャー入力の一部として解釈することができる。あるいはまたは加えて、第1入力メッセージを受けたことに応答して、独立ヒット・テスト・スレッドは少なくともあるヒット・テストを実行することができる。その例は、先に示した。
[0094] ステップ606では、複数の解釈の内少なくとも1つに関連する少なくとも1つの応答アクションを初期化する。これは、関連する応答アクションの完全な初期化および/または部分的な初期化を含むことができる。ある場合には、独立ヒット・テスト・スレッドが、初期化を実行する別のスレッドに通知を送り、この通知が、初期化が完全な初期化かまたは部分的な初期化かの指示を含むことができる。あるいはまたは加えて、別のスレッドが共有データー構造を利用して、実行すべき初期化のタイプを判定することができる。初期化は、1つ以上のCSSルールをエレメントに適用する、データー構造を割り当てる等というような、任意の適したタイプのアクションを含むことができる。
[0095] ステップ608では、少なくとも第2入力が受け取られたか否か判定する。ある場合には、これは、予め定められた時間枠内で第2入力が受け取られたか否か判定することを含むことができる。例えば、第2入力に関連する第2入力メッセージは、第1入力メッセージと同様に受けることができる。第2入力メッセージが、予め定められた時間枠内で受けとられない場合、ある実施形態では、第2入力メッセージが第1入力メッセージに関連がないと判定し、次いで第2入力メッセージを第1入力メッセージとは独立して処理し、および/または応答する。しかしながら、予め定められた時間枠内で第2入力メッセージが受け取られた場合、これらの入力を更に分析して、第1および第2入力が多重ジェスチャー入力の一部であるか否か判定する。
[0096] 第2入力が受け取られていないと判定したことに応答して、ステップ610では、部分的に初期化した応答アクションを完了する。ある場合には、応答アクションを完了するメッセージが、部分的に初期化した応答を処理するように割り当てられたスレッドに送られる。他の場合には、部分的に初期化した応答アクションを完了することは、単にステップ606において実行した初期化を、中断することなく完了させる(complete uninterrupted)ことによって、行われる。
[0097] 第2入力が受け取られたと判定したことに応答して、ステップ612では、第1および第2入力に基づいて、第1入力の明確な解釈を決定する。例えば、第1入力が4つの可能な解釈を有する場合、ステップ612では、どんな入力を受けたか、そしていつ受けた可能性があるか基づいて、4つの解釈から1つを選択する。ダブルタップ・ジェスチャーの先の例を引用すると、第1タップ入力は、第2タップ入力が受け取られたか否か、そして第2タップ入力が、予め定められた時間枠内で受け取られたか否かに基づいて、別個のダブルタップ入力として判定される。このように、入力の明確な解釈を決定することは、どんな入力が受け取られたかに基づくだけでなく、付加的に、予め定められた時間枠内で入力が受け取られたか否かに基づくこと、これらが受け取られた順序、入力の期間等に基づくことができる。
[0098] 入力に関連する明確な解釈を決定したことに応答して、ステップ614では、この明確な解釈に関連する応答アクションを呼び出す。任意の適したタイプの応答アクションを呼び出すことができ、その例は先に示した。ある場合には、応答アクションを呼び出すことは、この応答アクションを処理することが可能な別のスレッドに通知することを含むことができる。あるいはまたは加えて、応答アクションは、少なくとも部分的に、先に説明した「ジェスチャー・モード」および「マウス・モード」の例というような、デバイスが実行している状態またはモードに基づくことができる。
[0099] ステップ616では、少なくとも1つの部分的に初期化した応答アクションを終了する。ある実施形態では、通知および/またはメッセージを、部分的に初期化した応答アクションを処理したスレッドに送る。他の実施形態では、部分的な応答アクションを終了するために、共有データー構造を通知によって更新する。
[00100] 以上種々の実施形態について検討したので、以上で説明した実施形態を実現するために利用することができるシステムおよびデイバス例についてこれより検討する。
システムおよびデバイス例
[00101] 図7は、図1を参照して説明したような計算デバイス102を含むシステム例700を示す。システム例700は、パーソナル・コンピューター(PC)、テレビジョン・デバイス、および/または移動体デバイスにおいてアプリケーションを実行するとき、シームレスなユーザー体験のための遍在環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用し、ビデオ・ゲームをプレーし、ビデオを視聴する等の間1つのデバイスから次のデバイスに移るとき3つの環境全てにおいて共通のユーザー体験のために実質的に同様に実行する。
[00102] システム例700では、複数のデバイスが中央計算デバイスを介して相互接続される。中央計算デバイスは、複数のデバイスに対してローカルであってもよく、または複数のデバイスから離れて位置してもよい。一実施形態では、中央計算デバイスは、1つ以上のサーバー・コンピューターのクラウドであってもよく、1つ以上のサーバー・コンピューターは、ネットワーク、インターネット、または他のデーター通信リンクを介して複数のデバイスに接続される。一実施形態では、この相互接続アーキテクチャが、複数のデバイスに跨がって機能を伝え、複数のデバイスのユーザーに共通でシームレスなユーザー体験を提供することを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有してもよく、中央計算デバイスは、デバイスへの体験の配信を可能にするプラットフォームを使用し、この体験は、このデバイスに合わせて作られ、しかも全てのデバイスに共通する。一実施形態では、ターゲット・デバイスのクラスが作られ、体験は包括的なデバイスのクラスに合わせて作られる。デバイスのクラスは、物理的特徴、使用のタイプ、またはデバイスの他の共通する特性によって定めることができる。
[00103] 種々の実現例において、計算デバイス102は、コンピューター702、移動体704、およびテレビジョン706の使用というような、種々の異なる構成を想定することができる。これらの構成の各々は、一般に異なる構造および能力を有してもよいデバイスを含み、したがって、計算デバイス102は、異なるデバイス・クラスの内1つ以上にしたがって構成することができる。例えば、計算デバイス102は、パーソナル・コンピューター、デスクトップ・コンピューター、マルチスクリーン・コンピューター、ラップトップ・コンピューター、ネットブック等を含むコンピューター・デバイス・クラス702として実装することができる。これらの異なる構成の各々は、アプリケーション108および独立ヒット・テスト・コンポーネント110を含むことによって例示されるように、本明細書において説明した技法を採用することができる。
[00104] また、計算デバイス102は、移動体デバイス・クラス704として実現することもできる。このクラスは、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミング・デバイス、タブレット・コンピューター、マルチスクリーン・コンピューター等のような、移動体デバイスを含む。また、計算デバイス102は、テレビジョン・デバイス・クラス706として実現することもできる。このクラスは、普段の視聴環境における、一般にもっと大きな画面を有するまたはこれに接続されたデバイスを含む。これらのデバイスは、テレビジョン、セット・トップ・ボックス、ゲーミング・コンソール等を含む。本明細書において説明した技法は、計算デバイス102のこれら種々の構成によってサポートされることが可能であり、本明細書において説明した技法の特定例に限定されるのではない。
[00105] クラウド708は、コンテンツ・サービス712のためのプラットフォーム710を含む、および/またはこのプラットフォーム710を代表する。プラットフォーム710は、クラウド708のハードウェア・リソース(例えば、サーバー)およびソフトウェア・リソースの基礎機能を抽象化する。コンテンツ・サービス712は、計算デバイス102から離れたサーバーにおいてコンピューター処理が実行される間に利用することができるアプリケーションおよび/またはデーターを含むこともできる。コンテンツ・サーバー712は、インターネットを介したサービスとして、および/またはセルラまたはWi−Fiネットワークのような加入者ネットワークを介したサービスとして提供することができる。
[00106] プラットフォーム710は、計算デバイス102を他の計算デバイスと接続するために、リソースおよび機能を抽象化することができる。また、プラットフォーム710は、プラットフォーム710を介して実現されるコンテンツ・サービス712に対して出された要求に対して、対応する規模(scale level)を提供するために、リソースのスケーリングを抽象化する役割を果たすこともできる。したがって、相互接続デバイス環境では、本明細書において説明した機能の実現は、システム700にわたって分散されてもよい。例えば、機能は、部分的に計算デバイス102において実現され、更にクラウド708の機能を抽象化するプラットフォーム710を介して実現されてもよい。
[00107] 図8は、本明細書において説明した技法の実施形態を実現するために図1および図7を参照して説明したような、任意のタイプの計算デバイスとして実現することができるデバイス例800の種々のコンポーネントを示す。デバイス800は、デバイス・データー804(例えば、受信データー、受信しているデーター、ブロードキャストが予定されているデーター、データーのデーター・パケット等)の有線および/またはワイヤレス通信を可能にする通信デバイス802を含む。デバイス・データー804または他のデバイス・コンテンツは、デバイスの構成設定値、デバイスに格納されたメディア・コンテンツ、および/またはデバイスのユーザーに関連する情報を含むことができる。デバイス800に格納されるメディア・コンテンツは、任意のタイプのオーディオ、ビデオ、および/または画像データーを含むことができる。デバイス800は、1つ以上のデーター入力806を含み、これらを介して、ユーザー選択可能な入力、メッセージ、音楽、テレビジョン・メディア・コンテンツ、記録されたビデオ・コンテンツ、ならびに任意のコンテンツおよび/またはデーター・ソースから受信される任意の他のタイプのオーディオ、ビデオ、および/または画像データーというような、任意のタイプのデーター、メディア・コンテンツ、および/または入力を受けることができる。
[00108] また、デバイス800は、通信インターフェース808も含む。通信インターフェース808は、シリアルおよび/またはパラレル・インターフェース、ワイヤレス・インターフェース、任意のタイプのネットワーク・インターフェース、モデムの内1つ以上として、更に任意の他のタイプの通信インターフェースとして実現することができる。通信インターフェース808は、デバイス800と通信ネットワークとの間に接続および/または通信リンクを設け、これによって、他の電子デバイス、計算デバイス、および通信デバイスがデーターをデバイス800と伝達する。
[00109] デバイス800は、1つ以上のプロセッサー810(例えば、マイクロプロセッサー、コントローラー等の内任意のもの)を含む。プロセッサー810は、デバイス800の動作を制御するため、そして本明細書において説明した技法の実施形態を実現するために、種々のコンピューター実行可能命令を処理する。あるいはまたは加えて、デバイス800は、ハードウェア、ファームウェア、または固定論理回路の内任意の1つまたは組み合わせによって実現することもできる。これは、全体的に812で識別される処理および制御回路と関連付けて実装される。図示しないが、デバイス800は、当該デバイス内部の種々のコンポーネントを結合するシステム・バスまたはデーター転送システムを含むことができる。システム・バスは、メモリー・バスまたはメモリー・コントローラー、周辺バス、ユニバーサル・シリアル・バス、および/または種々のバス・アーキテクチャーの内任意のものを利用するプロセッサーまたはローカル・バスというような、異なるバス構造の内任意の1つまたは組み合わせを含むことができる。
[00110] また、デバイス800は、1つ以上のメモリー・コンポーネントというような、コンピューター読み取り可能媒体814も含む。その例には、ランダム・アクセス・メモリー(RAM)、不揮発性メモリー(例えば、リード・オンリー・メモリー(ROM)、フラッシュ・メモリー、EPROM、EEPROM等の内任意の1つ以上)、およびディスク記憶デバイスが含まれる。ディスク記憶デバイスは、ハード・ディスク・ドライブ、記録可能および/または再書き込み可能コンパクト・ディスク(CD)、任意のタイプのディジタル・バーサタイル・ディスク(DVD)等というような、任意のタイプの磁気または光記憶デバイスとして実現することができる。また、デバイス800は、大容量記憶媒体デバイス816も含むことができる。
[00111] コンピューター読み取り可能媒体814は、デバイス・データー804、更には種々のデバイス・アプリケーション818ならびにデバイス800の動作形態に関係する任意の他のタイプの情報および/またはデーターを格納するためのデーター記憶メカニズムを提供する。例えば、オペレーティング・システム820は、コンピューター・アプリケーションとして、コンピューター読み取り可能媒体814によって維持され、プロセッサー810において実行することができる。デバイス・アプリケーション818は、デバイス・マネージャー(例えば、制御アプリケーション、ソフトウェア・アプリケーション、信号処理および制御モジュール、特定のデバイスにネーティブなコード、特定のデバイスのためのハードウェア抽象層等)を含むことができる。また、デバイス・アプリケーション818は、本明細書において説明した技法の実施形態を実現するために任意のシステム・コンポーネントまたはモジュールも含むことができる。この例では、デバイス・アプリケーション818は、ソフトウェア・モジュールおよび/またはコンピューター・アプリケーションとして示される、インターフェース・アプリケーション822および入力/出力モジュール824を含む。入力/出力モジュール824は、タッチ・スクリーン、トラック・パッド、カメラ、マイクロフォン等のような、入力を取り込むように構成されたデバイスにインターフェースを提供するために使用されるソフトウェアを代表する。あるいはまたは加えて、インターフェース・アプリケーション822および入力/出力モジュール824は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせとして実現することができる。加えて、入力/出力モジュール824は、視覚入力およびオーディオ入力をそれぞれ取り込む別のデバイスというような、複数の入力デバイスをサポートするように構成することもできる。
[00112] また、デバイス800は、オーディオおよび/またはビデオ入力−出力システム826も含む。これは、オーディオ・データーをオーディオ・システム828に供給し、および/またはビデオ・データーをディスプレイ・システム830に供給する。オーディオ・システム828および/またはディスプレイ・システム830は、オーディオ、ビデオ、および画像データーを処理する、表示する、および/またはそれ以外でレンダリングする任意のデバイスを含むことができる。ビデオ信号およびオーディオ信号は、デバイス800からオーディオ・デバイスおよび/またはディスプレイ・デバイスに、RF(無線周波数)リンク、S−ビデオ・リンク、複合ビデオ・リンク、コンポーネント・ビデオ・リンク、DVI(ディジタル・ビデオ・インターフェース)、アナログ・オーディオ接続、または他の同様の通信リンクを介して伝達することができる。実施形態では、オーディオ・システム828および/またはディスプレイ・システム830は、デバイス800に対して外部コンポーネントとして実装される。あるいは、オーディオ・システム828および/またはディスプレイ・システム830は、デバイス例800の統合コンポーネントとして実装される。
結論
[00113] 1つ以上の実施形態において、主スレッド、例えば、ユーザー・インターフェース・スレッドとは別のヒット・テスト・スレッドを、ウェブ・コンテンツに対するヒット・テストのために利用する。ヒット・テストのために別のスレッドを使用することにより、ターゲットを素早く確認することが可能になる。しかるべき応答が、パンニングおよびピンチ・ズーミングのような、タッチ操作のために使用することができる操作スレッドというような、別のスレッドによって処理される場合、主スレッドにおいてブロックすることなく、操作を行うことができる。この結果、種々のシナリオにわたって、ロー・エンド・ハードウェアにおいてでも、応答時間は常に短くなる。
[00114] 少なくともある実施形態では、ウェブ開発者が、彼らのウェブページ上でタッチ行動のような特定のデフォルト行動を要求するためのメカニズムを提供する。少なくともある実現例では、カスケード・スタイル・シート(CSS)ルールを利用して、パンニング、ピンチ・ズーム、およびダブルタップ・ズーム操作というような操作をイネーブルまたはディスエーブルする。このメカニズムは、今後追加される追加のデフォルト行動に対応するように拡張可能にすることができる。種々の実施形態において、行動は前もって宣言されるので、したがって命令モード(imperative model)を採用するソリューションとは異なる。この手法の宣言的性質は、主スレッドからの完全な独立の達成を可能とし、更に独立したヒット・テストを使用して正しい応答を決定することを可能にする。
[0115] ある実施形態は、独立ヒット・テスト・スレッド内において追加の処理および/または論理処理を実行する能力を設ける。場合によっては、独立ヒット・テスト・スレッドは、1つ以上の入力シナリオ間で識別するように構成することができる。あるいはまたは加えて、入力シナリオに対する1つ以上の応答アクションを少なくとも部分的に初期化することができる。1つ以上の入力シナリオから別個の入力シナリオを判定するとき、関連する応答アクションを開始する、および/または実行のために別のスレッドに渡すことができる。尚、応答アクションを終了する通知を、少なくとも部分的に初期化された応答アクションを管理するスレッドに送ることができる場合もある。
[00116] 以上、構造的特徴および/または方法論的アクトに特定の文言で実施形態について説明したが、添付する請求項において定められる種々の実施形態は、必ずしも説明した特定の特徴やアクトには限定されないことは理解されよう。逆に、特定の特徴およびアクトは、種々の実施形態を実現する形態例として開示したまでである。

Claims (10)

  1. コンピューター実装方法であって、
    計算システム内において主スレッドと独立ヒット・テスト・スレッドとを実行するステップであって、前記独立ヒット・テスト・スレッドが前記主スレッドとは別である、ステップと、
    前記主スレッドとは別の前記独立ヒット・テスト・スレッドにおいて、下記のステップの各々を実行するステップと、
    を含み、前記下記のステップが、
    第1入力に関連する第1入力メッセージを受けるステップと、
    前記第1入力メッセージに関連する前記第1入力が複数の解釈を有すると決定するステップと、
    前記複数の解釈の内少なくとも1つの解釈に関連する少なくとも1つの応答アクションを初期化するステップと、
    第2入力が受け取られたか否か判定するステップと、
    前記第2入力が受け取られたと判定したことに応答して、少なくとも部分的に前記第1入力および第2入力に基づいて、前記複数の解釈から、前記第1入力の明確な解釈を決定するステップと、
    前記明確な解釈に関連する応答アクションを呼び出すステップと、
    である、コンピューター実装方法。
  2. 請求項1記載のコンピューター実装方法であって、更に、
    前記独立ヒット・テスト・スレッドを使用して、前記少なくとも1つの応答アクションを終了するステップを含む、コンピューター実装方法。
  3. 請求項1記載のコンピューター実装方法において、前記少なくとも1つの応答アクションを初期化するステップが、更に、前記少なくとも1つの応答アクションの部分的初期化を含む、コンピューター実装方法。
  4. 請求項3記載のコンピューター実装方法であって、更に、前記少なくとも1つの応答アクションの部分的初期化を完了するステップを含む、コンピューター実装方法。
  5. 請求項4記載のコンピューター実装方法において、前記少なくとも1つの応答アクションの部分的初期化を完了するステップが、前記第2入力が予め定められた時間枠の外側で受け取られたと判定したことに応答する、コンピューター実装方法。
  6. 請求項3記載のコンピューター実装方法において、前記部分的初期化が、1つ以上のカスケード・スタイル・シート(CSS)ルールを、前記第1入力に関連する1つ以上のエレメントに適用するステップを含む、コンピューター実装方法。
  7. 請求項1記載のコンピューター実装方法であって、更に、
    前記独立ヒット・テスト・スレッドを使用して、前記第1入力に関連するズーム比を決定するステップを含む、コンピューター実装方法。
  8. プロセッサー実行可能命令を含む1つ以上のコンピューター読み取り可能記憶メモリーであって、前記命令が、少なくとも1つのプロセッサーによる実行に応答して、
    主スレッドと独立ヒット・テスト・スレッドとを実行するステップであって、前記独立ヒット・テスト・スレッドが前記主スレッドとは別である、ステップと、
    前記主スレッドとは別の前記独立ヒット・テスト・スレッドにおいて、動作を実行するステップと、
    を実行するように構成され、前記動作が、
    第1入力に関連する第1入力メッセージを受け、
    前記第1入力メッセージに関連する前記第1入力が複数の解釈を有すると決定し、
    前記複数の解釈の内少なくとも1つの解釈に関連する応答アクションを部分的に初期化し、該部分的に初期化した応答アクションが、前記複数の解釈のうちの特定の1つを完全にかつ明確に決定した完全な入力に応答して実行される特定の応答アクションであり
    少なくとも第2入力が、予め定められた時間枠内に受け取られたか否か判定し、
    前記少なくとも第2入力が、前記予め定められた時間枠内に受け取られなかったと決定したことに応答して、前記部分的に初期化した応答アクションを完了し、
    前記少なくとも第2入力が、前記予め定められた時間枠内に受け取られたと決定したことに応答して、少なくとも部分的に、前記第1入力および前記少なくとも第2入力に基づいて、前記第1入力の明確な解釈に関連する応答アクションを呼び出す、
    ことを含む、コンピューター読み取り可能記憶メモリー。
  9. 請求項8記載のコンピューター読み取り可能記憶メモリーにおいて、前記第1入力および前記少なくとも第2入力が、タッチパッドを介して受け取られる入力に関連する、コンピューター読み取り可能記憶メモリー。
  10. 請求項9記載のコンピューター読み取り可能記憶メモリーにおいて、前記プロセッサー実行可能命令が、更に、
    前記タッチパッドを介して受け取られた入力に関連する多重ジェスチャー入力を識別し、
    前記多重ジェスチャー入力を識別したことに応答して、ジェスチャー・モードに移り、前記ジェスチャー・モードが、前記独立ヒット・テスト・スレッドを使用して、前記タッチパッドを介して受け取られた入力の独立ヒット・テストを可能にするように構成され、
    マウス・モード入力イベントを識別したことに応答して、前記ジェスチャー・モードからマウス・モードに移り、前記マウス・モードおよび前記ジェスチャー・モードが、前記タッチパッドを介して受け取られた入力を、異なって解釈する、
    ように構成される、コンピューター読み取り可能記憶メモリー。
JP2016519494A 2013-06-14 2013-09-20 タッチパッド操作およびダブルタップ・ズーミングに対する独立ヒット・テスト Expired - Fee Related JP6250151B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/918,547 US20140372903A1 (en) 2013-06-14 2013-06-14 Independent Hit Testing for Touchpad Manipulations and Double-Tap Zooming
US13/918,547 2013-06-14
PCT/US2013/061046 WO2014200546A1 (en) 2013-06-14 2013-09-20 Independent hit testing for touchpad manipulations and double-tap zooming

Publications (3)

Publication Number Publication Date
JP2016531335A JP2016531335A (ja) 2016-10-06
JP2016531335A5 JP2016531335A5 (ja) 2016-11-17
JP6250151B2 true JP6250151B2 (ja) 2017-12-20

Family

ID=49293908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016519494A Expired - Fee Related JP6250151B2 (ja) 2013-06-14 2013-09-20 タッチパッド操作およびダブルタップ・ズーミングに対する独立ヒット・テスト

Country Status (11)

Country Link
US (1) US20140372903A1 (ja)
EP (1) EP3008568A1 (ja)
JP (1) JP6250151B2 (ja)
KR (1) KR20160020486A (ja)
CN (1) CN105493018A (ja)
AU (1) AU2013392041A1 (ja)
BR (1) BR112015030741A2 (ja)
CA (1) CA2915268A1 (ja)
MX (1) MX2015017170A (ja)
RU (1) RU2015153214A (ja)
WO (1) WO2014200546A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10630751B2 (en) * 2016-12-30 2020-04-21 Google Llc Sequence dependent data message consolidation in a voice activated computer network environment
US8874969B2 (en) 2012-07-09 2014-10-28 Microsoft Corporation Independent hit testing
AU2015214262A1 (en) * 2014-02-04 2016-08-18 Tactual Labs Co. Low-latency visual response to input via pre-generation of alternative graphical representations of application elements and input handling on a graphical processing unit
US10163184B2 (en) 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
CN110018917B (zh) * 2019-04-11 2023-07-28 深圳市智微智能科技股份有限公司 实现独立鼠标输入通道的方法、系统、终端及存储介质
CN116719468A (zh) * 2022-09-02 2023-09-08 荣耀终端有限公司 交互事件的处理方法及装置
CN115220853A (zh) * 2022-09-21 2022-10-21 广州市保伦电子有限公司 基于多线程的墨迹作图方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886236B2 (en) * 2003-03-28 2011-02-08 Microsoft Corporation Dynamic feedback for gestures
US7436535B2 (en) * 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US7877703B1 (en) * 2005-03-14 2011-01-25 Seven Networks, Inc. Intelligent rendering of information in a limited display environment
US7577925B2 (en) * 2005-04-08 2009-08-18 Microsoft Corporation Processing for distinguishing pen gestures and dynamic self-calibration of pen-based computing systems
JP2009053986A (ja) * 2007-08-28 2009-03-12 Kyocera Mita Corp 文字入力装置、画像形成装置及び情報端末装置
US8289193B2 (en) * 2007-08-31 2012-10-16 Research In Motion Limited Mobile wireless communications device providing enhanced predictive word entry and related methods
US20090100383A1 (en) * 2007-10-16 2009-04-16 Microsoft Corporation Predictive gesturing in graphical user interface
US8526767B2 (en) * 2008-05-01 2013-09-03 Atmel Corporation Gesture recognition
US9684521B2 (en) * 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
WO2011061603A1 (en) * 2009-11-20 2011-05-26 Nokia Corporation Methods and apparatuses for generating and utilizing haptic style sheets
US20110126094A1 (en) * 2009-11-24 2011-05-26 Horodezky Samuel J Method of modifying commands on a touch screen user interface
US20110148786A1 (en) * 2009-12-18 2011-06-23 Synaptics Incorporated Method and apparatus for changing operating modes
US8786559B2 (en) * 2010-01-06 2014-07-22 Apple Inc. Device, method, and graphical user interface for manipulating tables using multi-contact gestures
US8589950B2 (en) * 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
US9069459B2 (en) * 2011-05-03 2015-06-30 Microsoft Technology Licensing, Llc Multi-threaded conditional processing of user interactions for gesture processing using rendering thread or gesture processing thread based on threshold latency
US20130067314A1 (en) * 2011-09-10 2013-03-14 Microsoft Corporation Batch Document Formatting and Layout on Display Refresh
WO2013170383A1 (en) * 2012-05-16 2013-11-21 Xtreme Interactions Inc. System, device and method for processing interlaced multimodal user input
US9286081B2 (en) * 2012-06-12 2016-03-15 Apple Inc. Input device event processing
US9977683B2 (en) * 2012-12-14 2018-05-22 Facebook, Inc. De-coupling user interface software object input from output

Also Published As

Publication number Publication date
RU2015153214A (ru) 2017-06-16
KR20160020486A (ko) 2016-02-23
MX2015017170A (es) 2016-10-21
US20140372903A1 (en) 2014-12-18
CN105493018A (zh) 2016-04-13
AU2013392041A1 (en) 2015-12-17
BR112015030741A2 (pt) 2017-07-25
EP3008568A1 (en) 2016-04-20
CA2915268A1 (en) 2014-12-18
JP2016531335A (ja) 2016-10-06
WO2014200546A1 (en) 2014-12-18

Similar Documents

Publication Publication Date Title
JP6250151B2 (ja) タッチパッド操作およびダブルタップ・ズーミングに対する独立ヒット・テスト
US10055388B2 (en) Declarative style rules for default touch behaviors
US10191633B2 (en) Closing applications
US10762277B2 (en) Optimization schemes for controlling user interfaces through gesture or touch
KR101278346B1 (ko) 이벤트 인식
US9383908B2 (en) Independent hit testing
CA2763276C (en) Input pointer delay and zoom logic
CN105474160A (zh) 高性能触摸拖放
JP2015512540A (ja) インスタンス化可能なジェスチャオブジェクト
US20120278712A1 (en) Multi-input gestures in hierarchical regions
JP2014523056A (ja) オンデマンドタブ回復
JP2015503804A (ja) 入力ポインタの遅滞
US10346031B2 (en) View activation via hit testing in an asynchronous windowing system
US20130067315A1 (en) Virtual Viewport and Fixed Positioning with Optical Zoom
CN104025008A (zh) 使能性能级联操作
CN107077272B (zh) 响应于用户动作而确定启用直接操纵的命中测试
US10845953B1 (en) Identifying actionable content for navigation
US10996963B2 (en) Integrating web-based tutorials into websites using a tag manager
US10915221B2 (en) Predictive facsimile cursor
CN117289833A (zh) 面向集成开发环境的悬浮窗显示和交互方法、设备、介质

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160920

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170712

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171121

R150 Certificate of patent or registration of utility model

Ref document number: 6250151

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees