(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
[0021]前述で簡潔に説明されたように、挿入ポイントの下でおよび範囲選択の最後に選択ハンドルを作成することによって、選択を操作するためにユーザインターフェースが提供され得る。ブラウザジェスチャまたはタッチイベントの意味解釈のためにスキームも提供され得る。加えて、ジェスチャまたはタッチに最適化されたユーザインターフェースが、ブラウザのために提供され得る。
【0011】
[0022]以下の詳細な説明では、その一部を形成し、実例として特定の実施形態または例が示される、添付の図面が参照される。これらの態様は結合させることができ、他の態様が使用可能であり、そして、本開示の趣旨および範囲を逸脱することなしに構造的変更が行われ得る。したがって、以下の詳細な説明は限定的意味で解釈されるべきではなく、本開示の範囲は、添付の特許請求の範囲およびそれらと同等のものによって定義される。
【0012】
[0023]実施形態が、コンピューティングデバイスでオペレーティングシステムを実行するアプリケーションプログラムと連動して実行するプログラムモジュールとの一般的関連で説明されることになるが、態様は他のプログラムモジュールとの組合せでも実装され得ることが、当業者には理解されよう。
【0013】
[0024]一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造体、および、特定のタスクを実行するまたは特定の抽象化データタイプを実装する他のタイプの構造体を含む。さらに、実施形態は、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーに基づくまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、および同等のコンピューティングデバイスを含む他のコンピュータシステム構成で実施され得ることが、当業者には理解されよう。実施形態はまた、タスクが、通信ネットワークを介してリンクされた遠隔処理デバイスによって実行される、分散コンピューティング環境でも実施され得る。分散コンピューティング環境で、プログラムモジュールは、ローカルメモリ記憶装置および遠隔メモリ記憶装置の両方に置かれ得る。
【0014】
[0025]実施形態は、コンピュータ実装されたプロセス(方法)、コンピューティングシステムとして、あるいは、コンピュータプログラム製品またはコンピュータ可読媒体などの製造品として、実装され得る。コンピュータプログラム製品は、コンピュータシステムによって可読であり、コンピュータまたはコンピューティングシステムに例示的プロセスを実行させるための命令を備えるコンピュータプログラムをコード化する、コンピュータ記憶媒体でもよい。コンピュータ可読記憶媒体は、コンピュータ可読メモリデバイスである。コンピュータ可読記憶媒体は、たとえば、揮発性コンピュータメモリ、不揮発性メモリ、ハードドライブ、フラッシュドライブ、フロッピー(登録商標)ディスク、またはコンパクトディスク、および同等の媒体のうちの1つまたは複数を介して、実装され得る。
【0015】
[0026]本明細書を通して、「プラットフォーム」という用語は、ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、およびブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースを提供するためのソフトウェアおよびハードウェアコンポーネントの組合せでもよい。プラットフォームの例は、複数のサーバを介して実行されるホスト型サービス、単一コンピューティングデバイスで実行されるアプリケーション、および同等のシステムを含むが、これらに限定されない。「サーバ」という用語は、一般に、通常はネットワーク環境で、1つまたは複数のソフトウェアプログラムを実行するコンピューティングデバイスを示す。しかし、サーバはまた、ネットワーク上のサーバとして見られる1つまたは複数のコンピューティングデバイスで実行される仮想サーバ(ソフトウェアプログラム)として実装することもできる。これらの技術および例示的動作のさらなる詳細が、以下に提供される。
【0016】
[0027]
図1を参照すると、ダイアグラム100は、実施形態が実装され得る例示的ネットワーク図を示す。ダイアグラム100に示されたコンポーネントおよび環境は、説明を目的とする。実施形態は、様々なコンピューティングデバイスおよびシステム、ハードウェアおよびソフトウェアを使用する様々なローカルの、ネットワーク化された、クラウドに基づくおよび同様のコンピューティング環境で実装され得る。
【0017】
[0028]ダイアグラム100に示された例示的環境で、タッチスクリーンでコンテンツを編集するためのカスタム選択が、ローカルにインストールされたまたはウェブのアプリケーションによって、固定コンピューティングデバイス(デスクトップもしくはラップトップコンピュータ)、またはハンドヘルドコンピュータ、タブレット106、スマートフォン108、車載コンピュータなどのモバイルデバイスなどのタッチおよびジェスチャのうちの一方または双方に基づく入力機構を有するクライアントデバイスで提供され得る。コンテンツは、テキスト、テーブル、画像などでもよく、実施形態による技法を使用して作成または編集されてもよい。
【0018】
[0029]ウェブアプリケーションの場合、サーバ102は、サービス(たとえば、スプレッドシートサービス、文書処理サービス、電子メールサービス、または同様のもの)を提供することができ、そのサービスは、1つまたは複数のネットワーク104を介してウェブアプリケーションを介してアクセスされ得る。一般に、特定のサービスが、スプレッドシート、ワードプロセッシング文書、プレゼンテーション、電子メール、グラフィックス文書、および同等のものなどの様々な種類の文書を見るおよび編集するためのユーザインターフェースを表示することができるクライアントデバイス106および108上のブラウザによって、アクセスされ得る。
【0019】
[0030]実施形態によるアプリケーションは、クライアントデバイス106および108で検出されたジェスチャ、タッチ、およびマウスのイベントをインターセプトすることができる。アプリケーションは、ジェスチャおよびタッチイベントがブラウザまたはデバイス依存の選択ハンドルを起動するのを止めることができる。代わりに、アプリケーションは、入力に最適化された選択ハンドルを起動して、複数のプラットフォームにわたってコンテンツ選択のための一貫した体験を提供することができる。
【0020】
[0031]
図2は、実施形態による例示的デフォルトおよびカスタム選択挙動の流れを示す。ダイアグラム200で、ウェブアプリケーションなどのアプリケーションは、ブラウザの選択挙動およびオペレーティングシステム(OS)選択ハンドルをトリガするイベントをインターセプトすることができる。アプリケーションは、それらのブラウザイベントをキャンセルすることができ、OSがそれらのイベントを見ることおよびそれらのイベントに基づいてアクションすることを阻止することができる。アプリケーションは、ブラウザおよびOSのうちの一方または双方のイベントに対応する選択を決定することができる。アプリケーションは、その選択に対応する選択ハンドルを表示することができる。アプリケーションは、範囲選択の終わりを見つけ、終わりの位置に従って対応する選択ハンドルをレンダリングすることができる。
【0021】
[0032]デフォルト選択挙動202で、検出されたジェスチャまたはタッチイベントなどのブラウザイベント204は、アプリケーション、たとえばブラウザ内のテキストなどのコンテンツの選択を開始することができる。検出されたブラウザイベントは、ブラウザ動作を開始して、オペレーティングシステム206での選択を処理することができる。オペレーティングシステムは、選択ユーティリティを初期化することができる。
【0022】
[0033]カスタム選択挙動208では、ウェブアプリケーションは、ブラウザイベントをインターセプトするおよびそのイベントを選択ユーティリティで置き換えるユーザインターフェースを提供することができる。加えて、アプリケーションは、ジェスチャまたはタッチイベント210などのブラウザイベントを検出することができる。アプリケーションはまた、ブラウザイベントをインターセプトすることができ、イベントをキャンセルすることができる212。さらに、アプリケーションは、ブラウザによって提供される選択ユーティリティを使用し、選択を行うことができる214。
【0023】
[0034]実施形態によるアプリケーションは、テキストの範囲の選択を検出することができる。選択は、ジェスチャまたはタッチ入力、マウス入力、キーボード入力などを介してもよい。加えて、アプリケーションは、検出された選択の挿入ポイントの下で選択ハンドルを作成することができる。次に、アプリケーションは、ネイティブブラウザハンドルを入力に最適化された選択ハンドルで置き換えることができる。
【0024】
[0035]加えて、アプリケーションは、選択の終わりに2つの追加の選択ハンドルを作成して、選択を管理するためのユーザインターフェースを提供することができる。ユーザインターフェースは、ユーザが選択を拡張または縮小するための選択を行うことができるようにすることが可能である。アプリケーションはまた、ネイティブブラウザハンドルの選択の挙動をエミュレートすることができる。アプリケーションは、検出された入力のタイプに従ってデフォルトブラウザ選択挙動をエミュレートし、デフォルトの挙動を再作成するための適切なハンドルを提供することができる。さらに、アプリケーションは、選択の代替挙動を提供することができる。アプリケーションは、代替選択挙動に関連するルールを実行することができる。一例は、選択に関連する通知を示すことを含み得る。
【0025】
[0036]
図3は、ブラウザと実施形態によるウェブアプリケーションの間のイベントを管理する例示的抽象化層を示す。ダイアグラム300で、イベントハンドラマネージャ(EHM)306は、ブラウザ302から入力マネージャにブラウザイベント304を送信することができる。1つまたは複数の入力マネージャ308、310、および312が存在し得る。
【0026】
[0037]入力マネージャは、イベントを処理することができる。入力マネージャは、イベントをウェブアプリケーション316によって理解可能なセマンティックイベント314に変えることができる。セマンティックイベント314は、次いで、イベントハンドラマネージャ306によってアプリケーションに送信され得る。例示的シナリオでは、入力マネージャがジェスチャまたはタッチイベントをブラウザから受信し得る場合、入力マネージャは、ブラウザイベントをウェブアプリケーション316に送信するためのジェスチャまたはタッチクリックイベントにコンバートすることができる。
【0027】
[0038]実施形態によるスキームは、ブラウザに由来するイベント(タッチ開始、タッチ終了、タッチ移動など)のためのレジスターイベントハンドラを含み得る。レジスターイベントハンドラは、ブラウザイベントを受信したとき、イベントを入力マネージャに経路指定することができる。入力マネージャは、アプリケーションによって理解可能なセマンティックイベント(たとえば「クリック」)の知識を有し得る。入力マネージャはまた、セマンティックイベントを構成する一連のブラウザイベントに関する情報(たとえば、タッチ開始に続くタッチ終了が、クリックイベントを構成する)を保持することができる。入力マネージャは、ブラウザイベントを受信し、セマンティックイベントに関するそれらの内部知識を使用して、アプリケーションにセマンティックイベントの発生を知らせるかどうかを決定することができる。
【0028】
[0039]入力マネージャはまた、複数の入力マネージャがブラウザイベントを処理する場合に他の入力マネージャと通信する能力を有し得る。一例は、クリックイベントまたはコンテキストメニューイベントのいずれかを起動するブラウザからのタッチ開始イベントを含み得る。結果として、2つの異なる入力マネージャが、ブラウザイベントを処理することができる。
【0029】
[0040]入力マネージャは、イベントのドキュメントオブジェクトモデル(DOM)要素に情報のキャッシュを置くことによって、通信することができる。各入力マネージャは、イベントを受信したときにDOM要素を処理することができ、他の入力マネージャに照会し、同イベントのさらなる処理を決定することができる。
【0030】
[0041]イベントハンドラマネージャはまた、イベントを入力マネージャに経路指定する順番を決定することができる。イベントハンドラマネージャは、優先度付きキューで入力マネージャを記憶することによって、イベントの経路指定を順序付けることができる。例示的シナリオでは、1の優先度を有する入力マネージャは、2の優先度を有する入力マネージャより前にイベントを受信することができる。等しい優先度を有する入力マネージャは、ランダムな順序でイベントを受信することができる。加えて、入力マネージャは、クリックなどのセマンティックイベントの発生を判定したときに、アプリケーションに通知することができる。入力マネージャはまた、他の入力マネージャに通知して、関連するセマンティックイベントのリッスンを停止することができる。
【0031】
[0042]実施形態によるアプリケーションで、イベントハンドラマネージャコードは、入力マネージャからブラウザイベントを受信するコードの部分と、ブラウザイベントで動作するもう1つの部分と、ブラウザイベントをコンバートするさらにもう1つの部分とを分ける代わりに、1つの大きなコンポーネントを包含することが可能である。さらに、入力マネージャは、各入力マネージャによって処理されるイベントに関連するDOM要素に情報のキャッシュを付加する代わりに互いへの参照を保持することによって、互いの間で通信することができる。
【0032】
[0043]例示的一実施形態によれば、ドラッグイベントを処理する入力マネージャは、マウスおよびジェスチャまたはタッチイベントを受け取り、それらをアプリケーションによって理解可能なドラッグイベントに標準化することができる。たとえば、ドラッグ入力マネージャ(DIM)は、キーボードイベントを処理する入力マネージャとコンテキストメニューイベントを処理する入力マネージャとによって既に使用されるイベントハンドラマネージャを使用することによって、ドラッグイベントを管理することができる。EHMは、DOMにおけるブラウザのイベントハンドラプロキシの登録を追跡することができ、アプリケーションの残りのイベントハンドラはDOMに対して登録する。加えて、EHMを使用する入力マネージャは、ブラウザイベントを受信し、次いで、それらをアプリケーションによって理解可能なセマンティックイベントに標準化することができる。入力マネージャは、次いで、アプリケーション内の適切なリスナーに通知するEHMに標準化されたセマンティックイベントを渡して返すことができる。
【0033】
[0044]DIMは、マウスダウン、マウスアップ、マウス移動、クリック、タッチダウン、タッチアップ、タッチ移動、およびタッチキャンセルを含むいくつかのブラウザイベントをEHMを介して登録することができる。DIMは、ドラッグイベントを判定するために、マウスダウンまたはタッチダウンイベントをリッスンすることができる。DIMは、マウス移動またはタッチ移動イベントを受信しながら、ドラッグ閾値と運動デルタを比較することができる。マウス移動またはタッチ移動イベントが起点値から十分遠くに移動した場合、DIMは、ドラッグアダプターにドラッグイベントを送信することによって、ドラッグイベントをトリガすることができる。ドラッグアダプターは、特定のDOM要素に接続されたウェブアプリケーションコンパニオン(WAC)内に存在するコードでもよい。DIMはまた、マウスイベント引数またはジェスチャまたはタッチイベント引数のいずれかをドラッグアダプターに送信して、アダプターがマウスドラッグとタッチドラッグを区別することを可能にすることができる。
【0034】
[0045]特定のイベントについてEHMで登録された入力マネージャは、優先度付きキュー内に置かれ得る。ブラウザイベントは、EHMがブラウザイベントをとらえたときに優先度の順番で入力マネージャに通知することができる。結果として、DIMは、マウス、ジェスチャ、タッチ、または同様のイベントを受信して、ドラッグイベントとしてDIMによって解釈されたイベントを追加の処理のためにマウス入力マネージャ(MIM)またはタッチ入力マネージャ(TIM)に同時に送信しながら、ドラッグが起こっているかを判定することができる。
【0035】
[0046]DIMは、MIMおよびTIMより高い優先度でEHMで登録され得る。DIMがドラッグイベントとしてDIMによって解釈されたイベントの処理を開始してMIMまたはTIMがそれらのイベントを処理するのを阻止するとき、DIMはそれらのイベントをキャンセルすることができる。例示的シナリオでは、DIMの阻止は、コンテキストメニューがタッチドラッグ中に起動するのを止めることができる。
【0036】
[0047]いくつかの例で、ドラッギングに特有のソースコードが、MIMから取り除かれ、DIM内に置かれ得る。MIMは、EHMを介して送信することができる。EHMは、EHM機能を複製するMIMソースコードを取り除くことができる。MIMは、ドラッギングに関連しないマウスイベントを受信および標準化するように最適化されたソースコードでもよい。
【0037】
[0048]TIMは、ドラッギングと無関係のジェスチャまたはタッチイベントを受信し、アプリケーションによる使用のためにイベントを標準化することができる。TIMはまた、ブラウザプロキシーハンドラおよびアプリケーションハンドラ管理のためにEHMを使用することができる。TIMは、以下のブラウザイベント、すなわちタッチダウン、タッチアップ、タッチ移動、およびクリックのためにEHMに登録することができる。TIMは、タップイベント、タッチおよびホールドイベントを受信し、それらのイベントをWACが理解できるイベントに標準化することができる。TIMは、タップイベントをクリックイベントに標準化することができる。TIMは、以下のイベント、すなわちユーザがモバイルブラウザでタップするときの、タッチダウン、タッチアップ、およびクリックを受信することができる。
【0038】
[0049]クリックイベントを検出したとき、TIMは、そのイベントにジェスチャまたはタッチイベント引数オブジェクトをアタッチした後に、クリックイベントをアプリケーションに送信することができる。TIMは、クリックイベントがマウスイベントではなくてジェスチャまたはタッチイベントに由来することをアプリケーションに知らせるために、ジェスチャまたはタッチイベントをアタッチすることができる。モバイルブラウザは、一般に、タッチダウンまたはタッチアップイベントがブラウザによって検出され、クリックイベントとして解釈された後に、クリックイベントを生成することができる。例示的シナリオでは、ブラウザがユーザはタップではなくてフリックまたはドラッグしようとしたと判定した場合、クリックイベントは検出され得ない。DIMは、ドラッグイベントの直後に生じたクリックイベントをフィルタで取り除くことができる。TIMは、素早く続けた2つのタップをダブルクリックイベントに標準化することができる。ブラウザで素早く続けた2つのタップを行うユーザはまた、以下のイベント、すなわちタッチダウン、タッチアップ、およびクリックを生成することができる。
【0039】
[0050]TIMはまた、クリックイベントをアプリケーションに送信し、第2のタップのリッスンを開始することができる。TIMが所定の時間内(ユーザまたはシステムは時間値を定義することができる)に第2のクリックイベントを受信し得る場合、TIMは、第2のクリックイベントをアプリケーションに送信することができ、続いてアプリケーションにダブルクリックイベントが送信される。クリックおよびダブルクリックの両方が、アプリケーションによって処理され得る。ダブルタップによって起動されたダブルクリックとともにクリックの処理は、アプリケーションにダブルタップおよびダブルクリックに一貫して動作させることができる。
【0040】
[0051]TIMは、タッチおよびホールドイベントをコンテキストメニューイベントに標準化することができる。ユーザがブラウザのスクリーンでタッチおよびホールドし得るとき、TIMは、タッチダウンイベントを受信することができる。タッチダウンイベントを受信したとき、TIMは、所定の時間の後にコンテキストメニューを表示することができるタイマーを起動することができる。所定の時間が過ぎた後、TIMは、コンテキストメニューイベントをアプリケーションに送信することができる。タッチアップイベントが所定の時間が経過する前に検出された場合、タイマーはキャンセルすることができ、コンテキストメニューは表示され得ない。TIMがコンテキストメニューイベントを送信した後は、ユーザがタッチおよびホールドを終了しない場合には、TIMは、コンテキストメニューを表示した後にドラッグイベントを処理することを阻止するために、ブラウザを介してタッチアップイベントをシミュレートすることができる。
【0041】
[0052]アプリケーション開発者は、カスタムコンポーネントをレジスターに提供し、ジェスチャまたはタッチイベントに応答することを可能にされ得る。TIMはジェスチャまたはタッチイベントをマウスイベントまたはコンテキストメニューイベントに標準化することによって動作することができるので、カスタムコンポーネントは、レジスターハンドラを介してMIMまたはコンテキストメニューのための入力マネージャに登録することができる。
【0042】
[0053]EHMは、TIMがクリックイベントを標準化し、EHMにクリックイベントを処理するように要求するとき、アプリケーションハンドラに送信することができる。アプリケーションにおける本ハンドラ方法は、イベントを処理するために情報に沿って送信するために使用することができるイベントハンドラ引数オブジェクトを受信することができる。
【0043】
[0054]スクロール可能なコンテンツは、通常は、インラインフレーム内に存在し得る。アプリケーションにおける任意のスクローリングは、2本の指によって生成されたイベントを含み得る。実施形態によれば、イベントハンドラマネージャは、タブレットおよび同様のデバイスの基本的な一本指のスクローリングを提供することができる。そのような実施形態は、以下のアクション、すなわち(1)DOM要素にアタッチされた新たなスクロールドラッグアダプターを作成し、(2)優先度「最後」を有するDOM要素のDIMにアダプターを登録する、を実行することができる。DIMは、要素にアタッチされたドラッグアダプターのキューをサポートすることができる。DIMは、順番にスクローリングイベントを処理し、現在のドラッグアダプターがドラッグイベントを処理することができない場合には、次のドラッグアダプターにイベントを送信することができる。優先度「最後」は、そのドラッグアダプターがドラッグイベントを処理する前に、他のドラッグアダプターが処理する機会を有することを意味し得る。
【0044】
[0055]スクロールドラッグアダプターは、ドラッグアダプターインターフェースを実装することができる内部クラスでもよい。インターフェースは、関連DOM要素でスクローリングイベントを処理することができる。オンドラッグ開始方法は、現在の位置を記憶することができる。オンドラッグ移動方法は、新たな位置と前の位置の差を計算することができる。オンドラッグ移動方法は、その差に合わせるために、DOM要素のスクロールの上位置およびスクロールの左位置を設定することができる。ポイントおよびタイムスタンプのリストが、処理された各ドラッグ移動イベントについて記録され得る。オンドラッグエンド方法では、放物線回帰が計算されて指の加速を判定し、それに応じてページ動画を実行することができる。
【0045】
[0056]
図4は、実施形態によるユーザインターフェースの最適化を示す流れ図を示す。ダイアグラム400で、実施形態によれば、アプリケーションは、ユーザインターフェース(UI)によって表示されたアンカー402でクリックイベントを検出することができる。アプリケーションは、クリックイベント404のジェスチャまたはタッチ入力に関する判定を行うことができる。アプリケーションがタッチ入力を判定し得る場合、アプリケーションは、ジェスチャまたはタッチに最適化されたUIを表示することができる406。アプリケーションがジェスチャまたはタッチとして入力のタイプを判定することができない場合、アプリケーションは、マウス入力に関する判定を行うことができる408。アプリケーションがマウスに基づくものとして入力のタイプを判定した場合、アプリケーションは、マウス入力に最適化されたUIを表示することができる410。そうでない場合、アプリケーションは前の状態または静的状態でUIを示すことができる412。
【0046】
[0057]アプリケーションは、動的UIをインスタンス化するアンカー要素を起動することができる。例示的シナリオでは、ボタンコントロールは、新たなウィンドウ枠を起動することができる。もう1つの例示的シナリオでは、編集可能なサーフェスコントロールは、キャレットを起動することができる。
【0047】
[0058]UIは、アプリケーションがジェスチャまたはタッチ入力を検出する場合に、ジェスチャまたはタッチに基づく制御に最適化され得る。例示的シナリオでは、大きなUIコントロールが、検出されたジェスチャまたはタッチ入力のためにUIによって使用され得る。UIは、アプリケーションがマウス入力を検出する場合に、マウスに基づく制御に最適化され得る。例示的シナリオでは、UIは、UI内のホバーなどのマウス制御中心機能を可能にすることができる。
【0048】
[0059]コンテキストメニュー制御はまた、UIの入力のタイプに従って同様に最適化され得る。アプリケーションがマウスイベントによって起動されたコンテキストメニューを検出した場合、マウス制御に最適化されたコンテキストメニューが、UI内で起動され得る。別法として、ジェスチャまたはタッチ制御に最適化されたコンテキストメニューが、コンテキストメニューを起動するために検出されたジェスチャまたはタッチイベントに応答してUI内で起動され得る。
【0049】
[0060]アプリケーションは、クリック(またはコンテキストメニュー)イベントのために登録すること、クリックイベントを検出すること、および、入力のタイプのクリックイベントを評価することによって、アンカーで使用される入力のタイプを判定することができる。ブラウザが、入力のタイプを提供することができない場合、入力のタイプは、入力マネージャアプリケーションプログラミングインターフェース(API)を使用し、取得され得る。入力マネージャAPIのクリック入力マネージャ(CIM)コンポーネントは、クリックイベントについて通知し、クリックイベントの入力のタイプを送信することができる。CIMは、複数のイベントをリッスンして入力のタイプを判定することができる。CIMは、オンクリックイベント、および他のブラウザ特有のジェスチャまたはタッチイベントをリッスンすることができる。タッチ開始イベントがクリックの直前に生じた場合(たとえば300ミリ秒未満)、アプリケーションは、クリックイベントがジェスチャまたはタッチ入力の結果であったと結論を下すことができる。別法として、入力マネージャは、クリックイベントを起動することを直ちに決定し、入力マネージャがタッチ移動イベントなしにタッチ開始イベントに続けてタッチ終了イベントを受信するときにはいつでも、ジェスチャまたはタッチ入力を判定することができる。ジェスチャまたはタッチ入力でのポインターイベントが、クリックイベントの直前に生じる場合、アプリケーションは、ジェスチャまたはタッチ入力に由来するクリックイベントを判定することができる。ポインターイベントは、ジェスチャまたはタッチイベントではあり得ない。ブラウザによって実装されるカスタムポインターイベントは、ジェスチャまたはタッチ、ペン、およびマウス入力を含むがこれらに限定されないブラウザによってサポートされるあらゆる入力のタイプについて起動し得る。ブラウザは、カスタムポインターを介して検出されたイベントの入力のタイプを送信することができる。別法として、アプリケーションは、ジェスチャイベントをリッスンし、そのジェスチャイベントに関するブラウザによって提供される情報を使用して、入力のタイプを判定することができる。
【0050】
[0061]UIは、最初に、マウス入力のために最適化され得る。その後、アプリケーションは、ジェスチャまたはタッチ入力のためのサイズおよびスペーシングパラメータを実装するカスケーディングスタイルシート(CSS)を適用することによって、ジェスチャまたはタッチ入力カスタマイズを実装することができる。CSSクラスは、ブラウザのDOMまたはUI要素のその部分でジェスチャまたはタッチ特有のスタイリングを起動するトップCSSレベルに追加され得る。別法として、アンカーがジェスチャまたはタッチ入力を介して起動され得るときに、完全に異なるDOM要素が、動的UIで生成され得る。アプリケーションはまた、キーボードに基づく入力に最適化されたUIを起動することができる。加えて、アプリケーションは、ペンに基づく入力に最適化された動的UIを起動することができる。
【0051】
[0062]UIの挙動は、検出された入力のタイプに基づいて変化し得る。アプリケーションは、UIのコンポーネントでの検出されたクリックイベントに従って、UIの挙動を変更することができる。別法として、アプリケーションは、指タップによって起動された検出されたジェスチャまたはタッチイベントに従って、UIの挙動を変更することができる。例示的シナリオでは、UIは、分割ボタンコントロールを表示することができる。UIは、ユーザが分割ボタンコントロールのタイプを変更することを可能にするドロップダウンメニューを表示することができる。ユーザがマウスでボタンコントロールをクリックする場合、アプリケーションは、ボタンコントロールに関連する動作を実行することができる。別法として、ユーザがボタンコントロールをタップする場合、UIは、メニューを表示することができる。入力マネージャは、分割ボタンコントロールでのユーザアクションに従って、入力のタイプを判定することができる。
【0052】
[0063]アプリケーションは、ユーザエージェントストリングおよびブラウザ特有のAPIを使用して静的またはブート時間UIを最適化することができる。アプリケーションは、ブラウザに関する情報を使用して、ブラウザのマウス、ジェスチャもしくはタッチ、または組合せ入力機能を判定することができる。静的UIは、マウス入力のみの機能を有するブラウザを検出すると、マウス入力に最適化され得る。静的UIの最適化はまた、同様に、ジェスチャもしくはタッチ入力または組合せ入力のシナリオに従って、カスタマイズされ得る。加えて、ボタンコントロールは、その両方がブラウザによる機能として検出され得るときに、ジェスチャまたはタッチおよびマウス入力の間で静的UIを切り替えるために提供され得る。ボタンコントロールは、ブラウザクッキーでユーザセッション間にその状態を持続することができる。
【0053】
[0064]
図5は、実施形態による入力のタイプに基づいてテーブルコントロールのための最適化されたユーザインターフェースの例を示す。ダイアグラム500は、マウス入力502およびジェスチャまたはタッチ入力512に従って最適化された例示的テーブルコントロールを表示する。
【0054】
[0065]UIを管理するアプリケーションは、UIでのユーザアクションの入力のタイプを検出することができる。検出されるユーザアクションは、ジェスチャもしくはタッチ入力またはマウスに基づく入力でもよい。UIは、マウス入力のためのテーブルコントロール502を表示するように最適化され得る。UIは、標準サイズテーブルコントロール504および標準サイズのテーブルサイズ選択コントロール506を表示することができる。標準サイズは、アプリケーションの開発中に決定されたUIの各コンポーネントのシステム設定でもよい。ユーザは他のタイプの入力と比較してより正確にマウスポインターを移動させることができ得るので、UIは標準サイズのコントロールを表示し得る。
【0055】
[0066]別法として、UIは、検出されるジェスチャまたはタッチ入力のための最適化されたテーブルコントロール512を表示することができる。UIは、大きなサイズのテーブルコントロール514および大きなサイズのテーブルサイズ選択コントロール516を表示することができる。大きなサイズは、ディスプレイ特性に従って判定される各UIコンポーネントのシステム設定でもよい。ユーザは、ジェスチャまたはタッチ入力を介してUIの細かな制御を実現することができなくなり得るので、UIは、大きなサイズのコントロールを表示することができる。
【0056】
[0067]
図6は、実施形態による検出された入力のタイプに基づく色およびフォントコントロールのための最適化されたユーザインターフェースの例を示す。ダイアグラム600は、検出された入力のタイプに従って最適化された例示的色およびフォントコントロールを表示する。
【0057】
[0068]UIを管理するアプリケーションは、入力のマウスまたはジェスチャもしくはタッチに基づくタイプのいずれかとしてUIでのユーザアクションの入力のタイプを検出することができる。アプリケーションがマウスタイプの入力を検出した場合、UIは、対応するユーザアクションに関連するマウスタイプの入力に最適化された色コントロール602またはフォントコントロール610を表示することができる。UIは、標準サイズ色選択コントロール606を有する色コントロール602または標準サイズフォント選択コントロール614を有するフォントコントロールを表示することができる。ユーザは他のタイプの入力と比較してより正確にマウスポインターを移動させることができ得るので、UIは標準サイズのコントロールを表示することができる。
【0058】
[0069]別法として、アプリケーションがジェスチャまたはタッチタイプの入力を検出した場合、UIは、対応するユーザアクションに関連するジェスチャまたはタッチ入力に最適化された色コントロール604またはフォントコントロール612を表示することができる。UIは、大きなサイズの色選択コントロール608を有する色コントロール604または大きなサイズのフォント選択コントロール616を有するフォントコントロール612を表示することができる。ユーザは、ジェスチャまたはタッチ入力を介してUIの細かな制御を実現することができなくなり得るので、UIは大きなサイズのコントロールを表示することができる。
【0059】
[0070]
図7は、検出された入力のタイプに基づくスタイルおよび検索コントロール向けに最適化されたユーザインターフェースと、実施形態による最適化されたユーザインターフェースを可能にするために提示される選択コントロールとの例を示す。ダイアグラム700は、検出された入力のタイプに従って最適化された例示的テキストスタイルおよび検索コントロール、ならびに、入力のタイプを選択するためのドロップダウンコントロールを表示する。
【0060】
[0071]アプリケーションは、UIでのユーザアクションの入力のタイプをマウスまたはジェスチャもしくはタッチ入力のいずれかとして検出することができる。アプリケーションがマウス入力を検出した場合、UIは、マウス入力に最適化されたテキストスタイルコントロール702または対応するユーザアクションに関連する検索コントロール710を表示することができる。UIは、標準テキストスタイル選択コントロール706を有するテキストスタイルコントロール702または標準サイズの検索ボックスコントロール714を有する検索コントロール710を表示することができる。ユーザは、他のタイプの入力と比較してより正確にマウスポインターを移動させることができ得るので、UIは、標準サイズのコントロールを表示することができる。
【0061】
[0072]別法として、アプリケーションがジェスチャまたはタッチ入力を検出した場合、UIは、ジェスチャまたはタッチ入力に最適化されたフォントスタイルコントロール704または対応するユーザアクションに関連する検索コントロール712を表示することができる。UIは、大きなサイズのフォントスタイル選択コントロール708を有するフォントスタイルコントロール704または大きなサイズの検索ボックスコントロール716を有する検索コントロール712を表示することができる。ユーザは、ジェスチャまたはタッチ入力を介してUIのより細かな制御を提供することができなくなり得るので、UIは、大きなサイズのコントロールを表示することができる。
【0062】
[0073]アプリケーションはまた、ユーザがドロップダウンメニューコントロール720を介して入力のタイプを選択することを可能にし得る。アプリケーションは、ユーザにUIのどこでも指でタップしてドロップダウンメニュー726を起動するように通知することができる。UIはまた、バレットアクション722のためのドロップダウンメニューの制御サーフェスをクリックするようにユーザに知らせる通知を表示することができる。バレットアクションは、入力のタイプ、たとえば、入力のタイプの挙動の管理に関連する追加のコントロールを提供することができる。加えて、UIは、ドロップダウンメニューの矢印コントロール724をクリックして選択コントロールを起動して入力のタイプを選択するようにユーザに知らせるための通知を表示することができる。
【0063】
[0074]いくつかの実施形態によれば、タッチまたはジェスチャ対応の入力デバイスおよび表示画面は、文書を見る/編集するために、およびユーザインターフェースを介してユーザから入力を受信するために、使用され得る。ジェスチャ対応の入力デバイスおよび表示画面は、ユーザによるタッチ入力または光学的に取得されたジェスチャが認識されることを可能にする任意の技術を使用することができる。たとえば、いくつかの技術は、熱、指の圧力、高キャプチャー率カメラ、赤外線、光キャプチャー、同調電磁誘導、超音波受信機、トランスジューサーマイクロフォン、レーザー測距器、影キャプチャーなどを含むが、これらに限定されない。タッチ対応のまたはジェスチャ対応のデバイスのユーザインターフェースは、ワードプロセッシングアプリケーション、プレゼンテーションアプリケーション、スプレッドシートアプリケーションおよびウェブページコンテンツに関連するコンテンツおよび文書と、表示されたコンテンツと対話するための動作のメニューとを表示することができる。ユーザは、ジェスチャを使用してユーザインターフェースと対話して、文書、テーブル、スプレッドシート、チャート、リスト、および任意のコンテンツ(たとえば、音声、ビデオなど)などのコンテンツにアクセスする、作成する、見る、および編集することができる。ジェスチャ対応の入力デバイスは、タッチまたはジェスチャ対応のコンピューティングデバイスに特有の機能を使用することができるが、従来のマウスおよびキーボードと連動することもできる。本明細書で使用されるようなタップまたはスワイプアクションなどのジェスチャまたはタッチ入力アクションは、指、ペン、マウス、または同様のデバイスを介して、ならびに、所定のキーボード入力の組合せ、視標追跡および音声命令のうちの1以上を介して、ユーザによって提供され得る。
【0064】
[0075]
図2から7の例示的シナリオおよびスキーマは、特定のコンポーネント、データータイプ、および構成で示される。実施形態は、これらの例示的構成によるシステムに限定されない。ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、および、ブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースの提供は、アプリケーションおよびユーザインターフェースでより少ないまたは追加のコンポーネントを使用する構成で実装され得る。さらに、
図2から7に示された例示的スキーマおよびコンポーネントとそれらのサブコンポーネントとは、本明細書に記載の原理を使用する他の値を有する同様の形で実装され得る。
【0065】
[0076]
図8は、実施形態によるシステムが実装され得るネットワーク化された環境である。ローカルおよび遠隔リソースは、ホスト型サービスなどの1つまたは複数のサーバ814または単一サーバ(たとえばウェブサーバ)816によって、提供され得る。アプリケーションは、ネットワーク810を介してラップトップ811、タブレットデバイス812またはスマートフォン813(「クライアントデバイス」)などの個々のコンピューティングデバイス上のクライアントインターフェースと通信することができる。
【0066】
[0077]前述のように、ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、および、ブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースは、ブラウザと対話するウェブアプリケーションを介して提供され得る。クライアントデバイス811〜813は、前述のように遠隔サーバ(たとえばサーバ814のうちの1つ)で実行されるアプリケーションへのアクセスを可能にすることができる。サーバは、直接にまたはデーターベースサーバ818を介してデーターストア819から/に関連データーを取り出す、または格納することができる。
【0067】
[0078]ネットワーク810は、サーバ、クライアント、インターネットサービスプロバイダー、および通信媒体の任意のトポロジーを備え得る。実施形態によるシステムは、静的または動的トポロジーを有し得る。ネットワーク810は、企業ネットワークなどの安全なネットワーク、ワイヤレスオープンネットワークなどの安全対策の施されていないネットワーク、またはインターネットを含み得る。ネットワーク810はまた、公衆交換電話網(PSTN)またはセルラーネットワークなどの他のネットワークを介して通信を統合することができる。さらに、ネットワーク810は、Bluetooth(登録商標)または同様のものなどの短距離ワイヤレスネットワークを含み得る。ネットワーク810は、本明細書に記載のノード間で通信を提供することができる。一例として、そして限定ではなく、ネットワーク810は、音波、RF、赤外線および他のワイヤレス媒体などのワイヤレス媒体を含み得る。
【0068】
[0079]多数の他のコンピューティングデバイス、アプリケーション、データーソース、およびデーター分散システムが、ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、およびブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースを提供するために使用され得る。さらに、
図8で論じられるネットワーク化された環境は、単に説明を目的とする。実施形態は、例示的アプリケーション、モジュール、またはプロセスに限定されない。
【0069】
[0080]
図9および関連する論考は、実施形態が実装され得る適切なコンピューティング環境の簡潔な概要を提供することを意図されている。
図9を参照すると、コンピューティングデバイス900など、実施形態によるアプリケーションのための例示的コンピューティング動作環境のブロック図が示される。基本的構成で、コンピューティングデバイス900は、少なくとも1つのプロセッシングユニット1602およびシステムメモリ904を含み得る。コンピューティングデバイス900はまた、プログラムの実行で協力する複数のプロセッシングユニットを含み得る。コンピューティングデバイスの正確な構成およびタイプに応じて、システムメモリ904は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または、それらの2つの何らかの組合せでもよい。システムメモリ904は、通常は、ワシントン州レドモンドのMICROSOFT CORPORATIONのWINDOWS(登録商標)オペレーティングシステムなど、プラットフォームの動作の制御に適したオペレーティングシステム905を含む。システムメモリ904はまた、プログラムモジュール906、アプリケーション922、およびユーザインターフェースモジュール924などの1つまたは複数のソフトウェアアプリケーションを含み得る。
【0070】
[0081]アプリケーション922は、ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、および、実施形態によるブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースのうちの1以上を提供することができる。ユーザインターフェースモジュール924は、タッチおよびジェスチャのうちの一方または双方対応のデバイスと連動した前述のサービスの提供においてアプリケーション922を助けることができる。この基本的構成は、破線908内のそれらのコンポーネントによって
図9に示される。
【0071】
[0082]コンピューティングデバイス900は、追加の特徴または機能を有し得る。たとえば、コンピューティングデバイス900はまた、たとえば磁気ディスク、光ディスク、またはテープなど、複数の追加のデーター記憶装置(取外し可能および取外し不可能のうちの一方または双方である)を含み得る。そのような追加のストレージは、取外し可能なストレージ909および取外し不可能なストレージ910によって
図9に示される。コンピュータ可読記憶媒体は、コンピュータ可読命令、データー構造体、プログラムモジュール、または他のデーターなどの情報の記憶のための任意の方法または技術で実装された、揮発性のおよび不揮発性の、取外し可能なおよび取外し不可能な媒体を含み得る。コンピュータ可読記憶媒体は、コンピュータ可読メモリデバイスである。システムメモリ904、取外し可能なストレージ909および取外し不可能なストレージ910は、すべて、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは、所望の情報を記憶するために使用することができるおよびコンピューティングデバイス900によってアクセス可能な任意の他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータ可読記憶媒体は、コンピューティングデバイス900の部分でもよい。コンピューティングデバイス900はまた、キーボード、マウス、ペン、音声入力デバイス、ジェスチャまたはタッチ入力デバイス、および同等の入力デバイスなどの入力デバイス912を有し得る。ディスプレイ、スピーカ、プリンタおよび他のタイプの出力デバイスなどの出力デバイス914もまた含まれ得る。これらのデバイスは、当技術分野ではよく知られており、ここで長く論じられる必要はない。
【0072】
[0083]コンピューティングデバイス900はまた、デバイスが分散コンピューティング環境、衛星リンク、セルラーリンク、および同等の機構でワイヤレスネットワークを介するなどして他のデバイス918と通信することを可能にする、通信接続916を含み得る。他のデバイス918は、通信アプリケーション、ストレージサーバ、および同等のデバイスを実行するコンピュータデバイスを含み得る。通信接続916は、通信媒体の一例である。通信媒体は、コンピュータ可読命令、データー構造体、プログラムモジュール、あるいは、搬送波または他の伝送機構などの変調されたデーター信号内の他のデーターをその中に含むことが可能であり、任意の情報配信媒体を含む。「変調されたデーター信号」という用語は、信号内に情報をコード化するようにその特性の1つまたは複数が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音波、RF、赤外線および他のワイヤレス媒体などのワイヤレス媒体とを含む。
【0073】
[0084]例示的実施形態はまた、方法を含む。これらの方法は、本明細書に記載の構造体を含む、任意の数の手段で実装され得る。1つのそのような手段は、本明細書に記載のタイプのデバイスの機械操作による。
【0074】
[0085]別の任意選択の手段は、いくらかを実行する1人または複数の人間のオペレータと連動して実行されることになる方法の個々の動作のうちの1つまたは複数を目的とする。これらの人間のオペレータは、互いに同一場所に配置される必要はないが、各々が、プログラムの一部を実行する機械のみとともにあってもよい。
【0075】
[0086]
図10A〜Cは、挿入ポイントの下、範囲選択の終わりでの選択ハンドル、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、およびブラウザのための入力最適化ユーザインターフェースを提供するプロセスの論理流れ図である。プロセス1000、1002、および1004は、いくつかの例でウェブアプリケーションなどのアプリケーションによって実装され得る。
【0076】
[0087]プロセス1000は、アプリケーションがテキストの範囲の選択を検出し得る動作1010で開始し得る。動作1020で、アプリケーションは、選択の挿入ポイントの下で選択ハンドルを作成することができる。アプリケーションは、ブラウザによって生成された選択に関連するイベントをインターセプトおよびキャンセルすることができる。次に、アプリケーションは、動作1030で、ネイティブブラウザハンドルを選択ハンドルで置き換えることができる。
【0077】
[0088]プロセス1002は、アプリケーションがそのアプリケーションとブラウザの間の抽象化層でタッチおよびジェスチャ対応のデバイスから一連のブラウザイベントを受信し得る動作1040で開始し得る。動作1050で、アプリケーションは、受信されたブラウザイベントを複数のデバイスおよびブラウザと互換性のあるセマンティックイベントの一貫した流れに標準化することができる。
【0078】
[0089]プロセス1004は、アプリケーションが入力を検出することができる動作1060で開始し得る。動作1070で、アプリケーションは、検出された入力のタイプに基づいて最適化されたユーザインターフェースを起動することができる。次に、アプリケーションは、動作1080で、検出された入力のタイプに基づいてユーザインターフェースの一部の挙動を修正することができる。
【0079】
[0090]いくつかの実施形態は、通信モジュール、メモリ、およびプロセッサーを含むコンピューティングデバイスで実装することができ、プロセッサーは、メモリに記憶された命令とともに前述のような方法または同等のものを実行する。他の実施形態は、前述のような方法または同等のものを実行するためのそこに記憶された命令を有するコンピュータ可読記憶媒体として実装され得る。
【0080】
[0091]プロセス1000、1002、および1004に含まれる動作は、説明を目的とする。ジェスチャまたはタッチスクリーンでコンテンツを編集するためのカスタム選択、ブラウザジェスチャまたはタッチイベントの意味解釈のためのスキーム、および、実施形態によるブラウザ内のジェスチャまたはタッチに最適化されたユーザインターフェースの提供は、より少ないまたは追加のステップを有する同様のプロセスによって、ならびに、本明細書に記載の原理を使用する異なる順番の動作で、実装され得る。
【0081】
[0092]前述の仕様、例、およびデーターは、実施形態の構成の製造および使用の完全な説明を提供する。主題は、構造的特徴および方法論的動作のうちの一方または双方に特有の言語で説明されたが、添付の特許請求の範囲に定義された主題は必ずしも前述の特定の特徴または動作に限定されないことを理解されたい。そうではなくて、前述の特定の特徴および動作は、本特許請求の範囲および実施形態を実装する例示的な形として開示される。