(57)【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
タッチ入力デバイス上での接触部を検出する段階と、
前記接触部の場所を判定する段階と、
前記接触部を中心とする仮想の半楕円に対する位置で、カーソルを表示する段階であって、前記カーソルは、前記仮想の半楕円に対する位置で、スクリーン全体を移動する、段階と
を備える、方法。
【請求項２】
前記カーソルを表示する段階は、前記接触部が前記スクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示する段階を含む、請求項１に記載の方法。
【請求項３】
コンピュータ実装方法であって、
タッチ入力デバイス上での接触部を検出する段階と、
前記接触部の場所を判定する段階と、
前記接触部の前記場所に基づいて変化する、前記接触部を中心とする仮想の半楕円に対する位置で、カーソルを表示する段階と
を備え、
前記カーソルを表示する段階は、
前記接触部がスクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示する段階と、
前記接触部が前記スクリーンの前記中央より下にある場合に、前記半楕円上の位置にオフセットを加算した位置に前記カーソルを表示する段階と
を含み、
前記オフセットは、前記スクリーンの上下方向に沿った前記接触部から前記スクリーンの前記中央までの距離に依存する、方法。
【請求項４】
前記接触部がスクリーン端に向かって移動することに応答して、前記接触部に対して中央により近い第１の位置から、前記接触部の中央により近くない第２の位置に前記カーソルを移動させる段階を備える、請求項１から３のいずれか一項に記載の方法。
【請求項５】
ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にする段階を備える、請求項１から４のいずれか一項に記載の方法。
【請求項６】
初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、前記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行する段階を備える、請求項１から５のいずれか一項に記載の方法。
【請求項７】
仮想マウスデバイスオブジェクトを通じてマウス入力イベントをオペレーティングシステムにエクスポーズする段階を備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
カーネルモードドライバを用いて前記仮想マウスデバイスオブジェクトを生成する段階を備える、請求項７に記載の方法。
【請求項９】
前記タッチ入力デバイスが、異なるヒューマンインターフェースデバイスパケットにそれぞれ関連付けられたタッチモードまたは仮想マウスモードのどちらであるかを検出する段階を備える、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
未検出のモードのパケットをフィルタリングで除去する段階を備える、請求項９に記載の方法。
【請求項１１】
仮想マウスモードを実装するためにドライバを用いる段階を備える、請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
実行された場合、コンピュータに、
タッチ入力デバイス上での接触部を検出することと、
前記接触部の場所を判定することと、
前記接触部を中心とする仮想の半楕円に対する位置でカーソルを表示することであって、前記カーソルは、前記仮想の半楕円に対する位置で、スクリーン全体を移動する、カーソルを表示することと
を含むシーケンスを実施させるための、コンピュータプログラム。
【請求項１３】
前記カーソルを表示することは、前記接触部が前記スクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示することを含む、請求項１２に記載のコンピュータプログラム。
【請求項１４】
実行された場合、コンピュータに、
タッチ入力デバイス上での接触部を検出することと、
前記接触部の場所を判定することと、
前記接触部の前記場所に基づいて変化する、前記接触部を中心とする仮想の半楕円に対する位置でカーソルを表示することと
を含むシーケンスを実施させるための、コンピュータプログラムであって、
前記カーソルを表示することは、
前記接触部がスクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示することと、
前記接触部が前記スクリーンの前記中央より下にある場合に、前記半楕円上の位置にオフセットを加算した位置に前記カーソルを表示することと
を含み、
前記オフセットは、前記スクリーンの上下方向に沿った前記接触部から前記スクリーンの前記中央までの距離に依存する、コンピュータプログラム。
【請求項１５】
前記シーケンスは、前記接触部がスクリーン端に向かって移動することに応答して、前記接触部に対して中央により近い第１の位置から、前記接触部の中央により近くない第２の位置に前記カーソルを移動させることを含む、請求項１２から１４のいずれか一項に記載のコンピュータプログラム。
【請求項１６】
前記シーケンスは、ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にすることを含む、請求項１２から１５のいずれか一項に記載のコンピュータプログラム。
【請求項１７】
前記シーケンスは、初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、前記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行することを含む、請求項１２から１６のいずれか一項に記載のコンピュータプログラム。
【請求項１８】
前記シーケンスは、仮想マウスデバイスオブジェクトを通じてマウス入力イベントをオペレーティングシステムにエクスポーズすることを含む、請求項１２から１７のいずれか一項に記載のコンピュータプログラム。
【請求項１９】
前記シーケンスは、カーネルモードドライバを用いて前記仮想マウスデバイスオブジェクトを生成することを含む、請求項１８に記載のコンピュータプログラム。
【請求項２０】
前記シーケンスは、前記タッチ入力デバイスが、異なるヒューマンインターフェースデバイスパケットにそれぞれ関連付けられたタッチモードまたは仮想マウスモードのどちらであるかを検出することを含む、請求項１２から１８のいずれか一項に記載のコンピュータプログラム。
【請求項２１】
前記シーケンスは、未検出のモードのパケットをフィルタリングで除去することを含む、請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記シーケンスは、仮想マウスモードを実装するためにドライバを用いることを含む、請求項１２から２１のいずれか一項に記載のコンピュータプログラム。
【請求項２３】
請求項１２から２２のいずれか一項に記載のコンピュータプログラムを格納した、１または複数の非一時的コンピュータ可読媒体。
【請求項２４】
タッチ入力デバイス上での接触部を検出し、前記接触部の場所を判定し、前記接触部を中心とする仮想の半楕円に対する位置で、カーソルを表示するプロセッサであって、前記カーソルは、前記仮想の半楕円に対する位置で、スクリーン全体を移動する、プロセッサと、
前記プロセッサに連結された記憶装置と
を備える装置。
【請求項２５】
前記プロセッサは、前記接触部が前記スクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示する、請求項２４に記載の装置。
【請求項２６】
タッチ入力デバイス上での接触部を検出し、前記接触部の場所を判定し、前記接触部の前記場所に基づいて変化する、前記接触部を中心とする仮想の半楕円に対する位置で、カーソルを表示する、プロセッサと、
前記プロセッサに連結された記憶装置と
を備える装置であって、
前記プロセッサは、前記接触部がスクリーンの中央より上にある場合に、前記カーソルを前記半楕円上に表示し、前記接触部が前記スクリーンの前記中央より下にある場合に、前記半楕円上の位置にオフセットを加算した位置に前記カーソルを表示し、前記オフセットは、前記スクリーンの上下方向に沿った前記接触部から前記スクリーンの前記中央までの距離に依存する、装置。
【請求項２７】
前記プロセッサは、前記接触部がスクリーン端に向かって移動することに応答して、前記接触部に対して中央により近い第１の位置から、前記接触部の中央により近くない第２の位置に前記カーソルを移動させる、請求項２４から２６のいずれか一項に記載の装置。
【請求項２８】
前記プロセッサは、ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にする、請求項２４から２７のいずれか一項に記載の装置。
【請求項２９】
前記プロセッサは、初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、前記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行する、請求項２４から２８のいずれか一項に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は概して、タッチスクリーンカーソルを制御するためのマウスコマンドの使用に関する。
【０００２】
ラップトップコンピュータ、デスクトップコンピュータ、携帯電話、ゲーム機などのメディア再生デバイス、および他のそのようなデバイスなど、従来のプロセッサベースのシステムでは、タッチスクリーン入力マウスコマンドは、キーボードまたはマウスで入力されたカーソルコマンドの使用の代替手段を提供する。例えば、マウスコマンドは、ディスプレイスクリーン上で選択を行うべくカーソルを移動させるのに用いられ得る。従来、マウスはユーザの手の中に保持され、マウスが移動させられるとカーソルが移動する。マウス上のボタンをクリックすることで、カーソルによりオーバーレイされる表示オブジェクトの選択が可能になる。
【０００３】
いくつかの場合、モバイルユーザは、マウスの使用を面倒だと感じることがある。なぜなら、携帯電話などの実際のプロセッサベースのデバイスよりも大きいことがある追加のデバイスを持ち運ぶ必要があるからである。また、携帯電話において見られるものなど、小型のスクリーンデバイスでは、スクリーンに表示されるいくつかのより小さな機能を選択するのに十分なスクリーン空間がないことがある。別の問題は、ディスプレイスクリーン上の小さなアイコンボタンまたはリンクの場合、ユーザがマウスカーソルを特定の場所に正確に配置するのが困難であり得ることである。
【図面の簡単な説明】
【０００４】
いくつかの実施形態が以下の図に関して説明される。
【図１】一実施形態によるディスプレイスクリーン上のユーザの右手の上面図である。
【図２】一実施形態によるディスプレイスクリーン上のユーザの右手の上面図である。
【図３】一実施形態によるディスプレイスクリーンの中央でのユーザの人差し指の上面図である。
【図４】一実施形態によるディスプレイスクリーンの左側でのユーザの手による右クリックの上面図である。
【図５】一実施形態によるディスプレイスクリーンの右側でのユーザの手の上面図である。
【図６】一実施形態によるディスプレイスクリーンの底部中央でのユーザの手の上面図である。
【図７】一実施形態によるディスプレイスクリーンの底部左端の上面図である。
【図８】一実施形態によるディスプレイの底部右端でのユーザの手の上面図である。
【図９】一実施形態による左マウスクリック操作の上面図である。
【図１０】一実施形態による右マウスクリック操作の上面図である。
【図１１】一実施形態によるフィルタの概略図である。
【図１２】一実施形態によるフィルタドライバアーキテクチャの概略図である。
【図１３】一実施形態による図１２のフィルタドライバの概略図である。
【図１４】一実施形態によるフィルタドライバステートマシンのフローチャートである。
【図１５】一実施形態によるユーザによる仮想マウスモードのアクティブ化の上面図である。
【図１６】一実施形態によるユーザによるカーソル移動コマンドの開始の上面図である。
【図１７】一実施形態によるユーザによるカーソル移動コマンドの実施過程の上面図である。
【図１８Ａ】一実施形態による左マウスクリック操作の上面図である。
【図１８Ｂ】一実施形態による右マウスクリック操作の上面図である。
【図１９】一実施形態のフローチャートである。
【発明を実施するための形態】
【０００５】
フィルタは、タッチジェスチャ認識のためにタッチ入力ストリームに挿入され得る。いくつかの実施形態において、次に、ストリームがマウスエミュレータに切り替えられ得る。しかしながら、これらのコンセプトは、他の入力／出力デバイスにも拡張され得る。例えば、音声入力ストリームのフィルタは、音声認識に用いられ得るが、次に、ストリームを、音声検出変換を実行するキーボードエミュレータに切り替え得る。よって、タッチ入力ストリームに関連して後述される例は、本開示の範囲を限定するものとみなされるべきではない。
【０００６】
一実施形態において、タッチスクリーンは、異なるモードで動作し得る。ノーマルモードでは、スクリーンは、オペレーティングシステムにより定義される、１本の指によるジェスチャ、複数の指によるジェスチャおよびペン／スタイラスでのジェスチャならびに関連する全てのジェスチャに応答する。（以下に定義される）特定のジェスチャを検出すると、タッチスクリーンは、仮想マウスモードに入る。このモードでは、通常のタッチ応答は無効化され、タッチスクリーンが仮想マウス／タッチパッドのように動作する。全ての指が持ち上げられた場合、一実施形態において、タッチスクリーンは、直ちにノーマルモードに戻る。
【０００７】
本明細書において用いられるように、タッチ入力デバイスとは、複数の指が入力デバイスにタッチしていることを検出するマルチタッチ入力デバイスをいう。
【０００８】
一実施形態において仮想マウスモードを開始すべく、ユーザは、図１に示されるように、３本の指によるジェスチャを用いて、任意の３本の指でスクリーンにタッチする。一実施形態において、ユーザは、ジェスチャを数ミリ秒保持する。複数の指のうちの１本は、人差し指と呼ばれ、マウスカーソルを制御する。開始時の３本の指によるジェスチャにおいて、人差し指は、スクリーンにタッチしている３本の指の中央（３本の指の位置のｘ値を比較することにより分かる）の指Ｐである。人差し指は、他の複数の指の少なくとも１本より上にある。これにより、ユーザは、カーソルＣを容易に見ることができる。ユーザは、人差し指をスクリーン上に保持して、仮想マウスモードに留まる。
【０００９】
ユーザは、単に人差し指をスクリーンのあちこちに移動させることにより、カーソルを移動させ得る。カーソルは、必ずユーザに見えるよう、わずかに距離をおいて人差し指の周りに位置する。これにより、カーソルは人差し指に繋がっているようにも見える。カーソルの正確な位置は、スクリーンでの人差し指の位置に依存する。
【００１０】
指による接触をマウス入力として用いることに伴う課題の１つは、カーソルがスクリーン全体をカバーするのを可能にすることである。これは端およびコーナー部を含む。このため、カーソルは、カーソルがスクリーンのどの部分にあるかに応じて、人差し指に対する異なる位置に動的に移動させられる。図２に示されるように、人差し指がスクリーンの中央より上にある場合、カーソルＣは、中心が人差し指Ｐである仮想の半楕円Ｅ上方の中央に位置する。
【００１１】
スクリーンを横切って延びるＸ軸に沿った人差し指の位置に応じて、カーソルは、当該楕円の周上の異なる点に位置する。人差し指の接触点は、図２〜８において円Ｄで表される。人差し指がスクリーンの中央にある場合、カーソルＣは、図３に示されるように、Ｄにある人差し指より上に位置する。人差し指がスクリーンの左端に近い場合、カーソルは、図４に示されるように、楕円に沿って人差し指の左に位置する。人差し指が右端に近い場合、カーソルは、図５に示されるように、楕円に沿って人差し指の右に位置する。人差し指がスクリーンの中央より下にある場合、Ｙオフセット（Ｙｏ）がカーソル位置のｙ値に加算されることを除き、カーソルは上述のように位置する。これにより、図６に示されるように、カーソルＣはスクリーンの底部への到達が可能になる。
【００１２】
Ｙオフセットの値は、Ｙ軸に沿った人差し指からスクリーンの中央までの距離に依存する。人差し指が上述の場合の間で移動する場合、カーソルは、半楕円の周全体を円滑に移動する。この方法により、図７および８に示されるように、カーソルは、ジャンプを行うことなく、コーナー部を含むスクリーンのどこへでも到達が可能になる。図７において、人差し指は、スクリーンの底部左部分にある。図８において、人差し指は、スクリーンの底部右位置にある。
【００１３】
仮想マウスモードである場合、ユーザは、人差し指以外の任意の指で左クリックおよび右クリックを実行し得る。図９に示されるように、ユーザの親指の下の同心円Ｅにより示される、人差し指の左側への任意のタッチは、左クリックとみなされる。ユーザの中指の下の同心円Ｆにより示される、人差し指の右側への任意のタッチは、図１０に示される右クリックとみなされる。タッチおよびホールドはマウスボタンの押下とみなされ、リリースはマウスボタンの解放とみなされる。ユーザは、人差し指をスクリーンからリリースすることにより、または任意の指で４回以上タッチを行うことにより、（仮想マウスモードを終了して）タッチモードに戻り得る。
【００１４】
図１１に示されるアーキテクチャ１０は、グラフィックエンジンまたはグラフィクスプロセッシングユニットコア１２でタッチデジタル処理を実行する。これにより、いくつかの実施形態において、より高い性能およびスケーラビリティを有するタッチ処理アルゴリズムを実行することが可能になる。タッチ処理アルゴリズムは、グラフィックカーネルに実装される。グラフィックカーネルは初期化中にロードされる。これらのカーネルは、一実施形態において、ＯｐｅｎＣＬ（登録商標）コード１４で記述される。
【００１５】
カーネルのシーケンスは、タッチデータのストリーミング時に実行される。タッチ集積回路（ＩＣ）１８のベンダは、グラフィクスプロセッシングユニット（ＧＰＵ）１２内でタッチセンサ１６からの生タッチデータを処理して最終的なタッチＸ−Ｙ座標を生成するカーネル（アルゴリズム）２０を提供する。このデータは次に、標準タッチヒューマンインターフェースデバイス（ＨＩＤ）パケット２４としてオペレーティングシステム２２に送られる。
【００１６】
このアーキテクチャにより、追加の後処理カーネルの連鎖が可能になり、これにより、ＯＳに到達する前にタッチデータがさらに処理され得る。
【００１７】
図１１に示されるように、仮想マウスは、後処理カーネル２６に実装される。この後処理ソリューションにより、ベンダカーネルに拘わらず、汎用アルゴリズムが実行可能になる。後処理カーネルは、タッチＩＣベンダに拘わらず実行されるので、独立系ハードウェアベンダ（ＩＨＶ）に非依存である。データフォーマットにおけるベンダ間の差異を統一すべく、構成データは、全てのタッチＩＣベンダにわたってデータを整合する。このファームウェアは、初期化中にロードされ、ＧＰＵ上で実行され、かつ、オペレーティングシステムに一切依存しないので、オペレーティングシステムベンダ（ＯＳＶ）非依存でもある。
【００１８】
後処理カーネルは、１つのカーネルから次のカーネルへのデータのフローを可能にする連鎖実行モデルに続く。これにより、前に処理されたデータに対するカーネルの実行が可能になる。各カーネルは、特定のオペレーティングシステムまたはタッチコントローラに適応するのに用いられ得る。カーネルの位置は、構成の一部として、ユーザにより特定される。ハードウェア上で動作する能力により、ソフトウェアスタックを表示させることなくこれらのアルゴリズムが動作することが可能になる。後処理カーネルは、ベンダカーネルと同時に動作する。これにより、データのコピーまたは後処理カーネルの実行のための一切の外部介入の必要がなくなる。仮想マウス機能に追加して、ジェスチャおよびタッチデータフィルタリングが後処理に実装され得る。
【００１９】
タッチコントローラ１８は、生センサデータを取得し、当該データを、カーネル、ＯＳまたはアプリケーションにより用いられ得る、クリーンなデジタル接触点情報に転換する。このデータはタッチＨＩＤパケット２４として送信される。ＯＳに到達する前に、ＨＩＤパケットは、上述のようにＧＰＵ上で動作するカーネル２０のシーケンスを通過する。
【００２０】
仮想マウスカーネルまたはタッチ／マウススイッチ３０はステートマシンのように動作する。それは、仮想マウスのステータス（オンまたはオフ）、およびカーソルの位置に関連する他の情報を格納する内部状態を保持する。
【００２１】
仮想マウスカーネル２６は、ＨＩＤパケットのストリームを入力として取得して、ジェスチャ認識２５を実行して、仮想マウスモードを開始すべく用いられるジェスチャを検出する。仮想マウスモードではない場合、カーネルの出力はタッチＨＩＤパケット２４になる。仮想マウスモードである場合、タッチＨＩＤパケットはスイッチ３０によりブロックされ、カーネルの出力はマウスＨＩＤパケット３２になる。タッチＨＩＤパケットまたはマウスＨＩＤパケットは、スイッチ３０におけるパケットのフィルタリングについて認識していないＯＳ２２に渡される。ＯＳは次に、アプリケーション（ＡＰＰＳ）３４に基づいてマウスモードおよびタッチモードを処理する。
【００２２】
スクリーン上の人差し指の位置を考慮してマウス用の正確な座標を計算するアルゴリズムが、カーネル２６内に構築される。
【００２３】
仮想マウスを実装する代替的な方法は、ドライバを通じてタッチデータ処理およびタッチフィルタリングを行うことである。ジェスチャ認識アルゴリズムおよびタッチＨＩＤパケットのフィルタリングは、上述のものに非常に類似するであろう。しかしながら、ドライバを通じてこれを行うと、アルゴリズムがＯＳに依存したものになってしまうであろう。ＯＳに依存したものだと、仮想マウス機能を実装するのにＯＳベンダとの連携が必要になる。
【００２４】
仮想マウスの使用をユーザにとってより直感的なものにすべく、システムが仮想マウスモードである場合、マウスの光透過オーバーレイ画像が表示されてもよい。ユーザがスクリーンの近くで指を左に持っていくと、タッチホバー機能を用いてそれが検出され、光透過画像が接触点の近くに現れて、このタッチにより左クリックが行われることになる旨をユーザに示唆する。同様に、指が近付くにつれて、異なる画像が右側に現れる。
【００２５】
上記のものの代替的な実装では、システムが仮想マウスモードになるとすぐに（すなわち、ホバー機能に依存することなく）、オーバーレイ画像は、左クリック領域および右クリック領域を示す。
【００２６】
仮想マウスのためのスクリーン全体の使用に代わるものとして、より小さい透過性の長方形が現れて、仮想タッチパッドのように動作してもよい。このタッチパッドは、ＯＳまたはアプリケーションが表示しているコンテンツ上にオーバーレイされるであろう。ユーザはこのタッチパッドを用いて、それが物理タッチパッドであるかのようにマウスを制御する。仮想左右ボタンも提供されてよい。
【００２７】
仮想マウスは左クリックおよび右クリックに使用されている指を区別しないので、両手を使用することも可能である。システムが仮想マウスモードに入った場合、右手人差し指を使用してカーソルが移動され得、ユーザは左手で左クリックを行い得る。これはクリックおよびドラッグにも用いられ得る。ユーザは、人差し指カーソルで項目を選択し得、左手を使用してクリックし得、それをスクリーン上で保持しながら、右手人差し指をスクリーンのあちこちで移動させてドラッグ操作を行い得る。
【００２８】
また、アルゴリズムは、右利きの人と左利きの人とを考慮する。アルゴリズムは、３本の指によるジェスチャに基づいてそれを検出し、仮想マウスモードに入る。左利きの人のための指の配置は、右利きの人のための指の配置とは異なる。これは、今日の物理マウス操作方法に対する進歩である。ユーザは、マウスを右利き用または左利き用に用いるかを設定するのに選択（Ｗｉｎｄｏｗｓ（登録商標）コントロールパネル）を行わなければならない。仮想マウスの場合、これはオンザフライで操作され得る。
【００２９】
デバイスドライバを用いた一実施形態に従って、カーネルモードドライバは、仮想マウスデバイスを生成してオペレーティングシステム（ＯＳ）とインターフェースすることで、タッチパネルからイベントを取り込み、それらをマウスイベントに変換し、仮想マウスデバイスを通じてそれらをＯＳにエクスポーズする。また、マウスの動作を有効化／無効化および制御すべく、特定のタッチスクリーンでの指によるジェスチャのセットが定義される。
【００３０】
いくつかの実施形態において、ユーザは、スクリーン上でより正確にポイントし得、マウスムーブオーバーイベントをトリガし得、右クリックイベントを容易にトリガし得る。ユーザは外部マウスを持ち運ぶ必要がない。いくつかの実施形態の利点には、（１）いかなるマウスシミュレーションアプリケーションも手動で実行／停止することなく、マウスモードと通常タッチパネル動作モードとをシームレスに切り替えること、（２）ソフトウェアロジックがＯＳユーザモードモジュールに対して透過的であり、いかなるユーザモードのフレームワークにも依拠しないこと、および（３）使用体験が同じでありながら、Ｗｉｎｄｏｗｓ（登録商標）クラッシックデスクトップモードおよびＭｏｄｅｒｎ  （Ｍｅｔｒｏ）  ＵＩの両方をシームレスにサポートすることが含まれる。
【００３１】
よって、図１９を参照すると、シーケンス８０がソフトウェア、ファームウェアおよび／またはハードウェアに実装され得る。ソフトウェアおよびファームウェアの実施形態において、シーケンス８０は、磁気記憶装置、光記憶装置または半導体記憶装置などの１または複数の非一時的コンピュータ可読媒体に格納されたコンピュータ実行命令により実装され得る。
【００３２】
図１９を参照すると、仮想マウスシーケンス８０は、ソフトウェア、ファームウェアおよび／またはハードウェアに実装され得る。ソフトウェアおよびファームウェアの実施形態において、仮想マウスシーケンス８０は、磁気記憶装置、光記憶装置または半導体記憶装置などの１または複数の非一時的コンピュータ可読媒体に格納されたコンピュータ実行命令により実装され得る。
【００３３】
シーケンス８０は、ひし形ブロック８２において判定されるように特徴的なタッチが検出されたか否かを判定することにより始まる。例えば、特徴的なタッチは、仮想マウスモードに入る要望を示す、図１５に描写される３本の指によるタッチであり得る。当該タッチが検出されなかった場合、フローは継続せず、デバイスは従来のタッチモードに留まる。
【００３４】
タッチモードの特徴が検出された場合には、ブロック８４に示されるように、接触部の場所が判定される。具体的には、一実施形態において、中指がスクリーンに接触する、スクリーン上での場所が検出される。一実施形態において、この場所は、上端に近接する領域、下端に近接する領域、右端に近接する領域、左端に近接する領域、そして最後に中央領域、を含む、スクリーンの予め定められた領域であってよい。
【００３５】
次に、ブロック８６に示されるように、人差し指に対するカーソル位置が接触部の場所に基づいて調整される。例えば、中央での接触が一実施形態において検出され、カーソル位置は、図３に示されるような向きになり得る。左端領域での接触が検出された場合には、カーソル位置は、図４に示されるように調整され得る。同様に、右端での接触が検出された場合には、カーソル位置は、図５に示されるように調整され得る。底端での接触が検出された場合、カーソル位置は、図６に示されるようになり得る。底部左端が検出された場合には、図７の構成が用いられ得、底部右端が検出された場合は、図８に示される構成が用いられ得る。同じ技術が上部左端および上部右端に用いられ得る。もちろん、ディスプレイスクリーン上に別個の領域を画定することに加えて、またはそれに代わるものとして、他の規定が用いられてもよい。
【００３６】
加えて、いくつかの実施形態において、指がスクリーンの中央より下または上のいずれかにある場合は、Ｙオフセットが加算される。いくつかの実施形態において、Ｙオフセットの値は、Ｙ軸上での人差し指からスクリーンの中央までの距離に依存し得る。
【００３７】
別の実施形態によると、図１２に示されるカーネルモードデバイスフィルタ（ＫＭＤＦ）ドライバ４０は、タッチデバイスオブジェクトである物理デバイスオブジェクト（ＰＤＯ）４４とユーザ層サービス４６との間に位置する。ＰＤＯは、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるロジカルデバイスを表す。フィルタドライバは、タッチベンダに非依存であるが、いくつかの実施形態において、Ｗｉｎｄｏｗｓ（登録商標）特有のものである。
【００３８】
このアーキテクチャは、ドライバ７４を用いて、標準的なＨＩＤ  ｏｖｅｒ  Ｉ２Ｃプロトコルもサポートし得る。このアーキテクチャは、マウスドライバ７０を用いて、物理マウスもサポートし得る。
【００３９】
このフィルタドライバは、タッチデバイスとユーザ層サービスとの間の全てのデータトランザクション、特に、外部タッチコントローラ４８からのタッチイベントデータを取り込む。フィルタドライバは、このデータを処理し、タッチスクリーン上の予め定められた指によるジェスチャを認識し、次に、それらをマウスイベントに変換する。これらのイベントは、仮想ＨＩＤマウス物理デバイスオブジェクト（ＰＤＯ）５０およびＨＩＤクラスドライバ７２を通じてＯＳに送信される。
【００４０】
このフィルタドライバ４０の内部アーキテクチャは、図１３に示される。図１３および図１１に示されるアーキテクチャは、２つの異なるマウスオーバータッチソリューションを表わしている。図１３は、セントラルプロセッサフィルタドライバベースのソリューションのアーキテクチャ設計を示す。このアーキテクチャ設計は、ＣＰＵ上で動作するＷｉｎｄｏｗｓ（登録商標）ソフトウェアドライバに実装される。このアーキテクチャ設計は、図１１に示されるカーネルを用いていない。このアーキテクチャ設計は、３つの主要な部分を含む。タッチイベントデータキャプチャコールバック６０は、タッチデバイスオブジェクト４４に対する全てのリクエストに登録されたコールバック機能、およびデータ抽出機能のセットである。これらの機能は、タッチデータで満たされたリクエストをタッチデバイスオブジェクトが完了するたびに呼び出される。これらの機能は、Ｘ／Ｙ座標、タッチスクリーン上の指の数および個々の指の識別子を含む対象データを抽出し、当該データを次の受信モジュール６８に送信する。また、データ転換・変換モジュール６２からの仮想マウスアクティブの結果（はい／いいえ）に応じて、コールバックは、元のタッチイベントデータをＯＳに送信するか否かを決定する（ひし形ブロック６６）。
【００４１】
タッチデータ転換・変換モジュール６２は、予め定められた指によるジェスチャを認識し、それらをマウスデータに変換し、仮想マウスモードに入るか否かを決定する（ひし形ブロック６６）、フィルタの主要ロジック部である。この部分は、図１４に示されるように実装されるステートマシンである。
【００４２】
仮想マウスデバイスオブジェクトハンドラ６４は、転換されたマウスイベントデータを受信し、当該データをＨＩＤ入力レポートにパッケージ化してから、仮想マウスデバイスオブジェクト５０を通じて当該レポートをＯＳに送信する。
【００４３】
一実施形態において、指によるジェスチャは、図１５、１６、１７および１８に示されるように仮想マウスと共に動作するよう定義される。図１５に示されるように、３本の指がタッチスクリーン上である期間（例えば３秒）移動することなく留まっていると、タッチトゥーイベント変換がアクティブになる。これにより、フィルタドライバが元のタッチイベントデータをＯＳに渡すことが無効化される。タッチトゥー変換がアクティブになっている場合、タッチスクリーン上に３本の指を再び置くと、この変換が無効になり、元のタッチイベントデータを図１３の受信モジュール６８を介してＯＳに渡すことが可能になる。
【００４４】
１本の指のみがタッチしており、矢印Ａにより示されるように移動した場合、マウスカーソルは、図１６において矢印Ｂにより示されるようにスクリーン上を移動する。２本の指がタッチしており、矢印Ｃにより示されるように一緒に移動した場合、マウスカーソルは、図１７において矢印Ｄにより示されるように左ボタン押下（アイコンＩのドラッグアンドドロップ）がなされるかのように、矢印Ｂにより示されるように移動する。
【００４５】
図１８Ａおよび１８Ｂにおいて円Ｔにより示されるように１本の指がタッチし、次に、別の指がタッチしてからある期間（例えば２００ｍｓ）内に離された（タップ）場合、マウスボタンクリックイベントがトリガされる。右ボタンクリックまたは左ボタンクリックのどちらが意図されているかの認識は、タッピングしている指Ｆが左（図１８Ａ）または右（図１８Ｂ）のどちらにあるかに依存する。
【００４６】
上述のようにタッチトゥーマウスイベント変換およびジェスチャをサポートすべく、一実施形態において、図１４に示されるステートマシンは、図１３のタッチデータ転換・変換モジュール６２に実装される。
【００４７】
一実施形態において、図１４に示される４つの状態がある。アイドル状態９０では、タッチスクリーン上に指がなく、マウスイベントは生成されない。１本指状態９２では、１本の指がタッチしているものと検出され、この指がタッチしたまま移動する距離および方向に従って、マウス移動イベントがＯＳに送信される。１本指から２本指に入る状態９４では、１本指状態から２本の指がタッチしていることが検出される。しかしながら、これがユーザの指によるタッピングイベントであるか否かは不明である。そうであるので、フローはクリックタイムアウト（例えば２００ｍｓ）を待機する。このタイムアウトの前にタッチスクリーン上で１本の指のみが再び検出された場合、フローは、１本指状態９２に戻り、左／右ボタンクリックイベントをトリガする。このタイムアウトが生じた場合、当該状態は２本指状態９６に変わる。２本指状態では、タッチスクリーン上で２本の指が検出され、これらの２本の指がタッチスクリーン上で移動する距離および方向に従って、カーソルが移動し、左ボタン押下イベントがＯＳに送信される。
【００４８】
加えて、一実施形態において、スキャンタイムアウト（例えば２０ｍｓ）は、タッチスキャン間隔の２倍に等しい。このスキャンタイムアウトの後にタッチイベントが受信されない場合、ユーザは全ての指をスクリーンから離してしまっており、フローはアイドル状態に戻る。
【００４９】
いくつかの実施形態に従って、タッチスクリーンなどのタッチ入力デバイスは、２本以上の指で同時にスクリーンをタッチすることにより、マウスモードで操作され得る。一実施形態において、３本の指が利用されてもよい。一実施形態において、この３本の指は、親指ならびに人差し指および中指であり得る。その場合、人差し指および中指は、仮想マウスコマンドを入力すべく左クリックまたは右クリックするのに用いられ得る。
【００５０】
いくつかの実施形態において、システムは、複数の指によるタッチ入力デバイス上での同時タッチを検出し得る。３本の指によるスクリーンタッチコマンドの場合、システムは、左手または右手のどちらがデバイス上にあるのかと、３本の指の相対的な位置とを判定し得る。これが行われ得る一方法は、３つの接触点により画定される三角形の性質および特にその形状を解明し、このことから、ユーザの左手または右手のどちらがデバイス上にあるのかを判定することである。このような手の特定は、左クリックまたは右クリックのどちらが指示されているのかを判定する際に重要であり得る。一実施形態において、左クリックまたは右クリックは、左手または右手のどちらが使用されているかに応じて人差し指または中指のいずれかでスクリーンをタッピングすることにより、指示され得る。一実施形態において、左手人差し指は右の位置にあり、右手の人差し指は左の位置にある。それらの両方が左クリックである。そうであるので、いくつかの実施形態において、手の特定は重要であり得る。
【００５１】
以下の項目および／または例は、さらなる実施形態に関する。一例示的実施形態は、タッチ入力デバイス上での接触部を検出する段階と、上記接触部の場所を判定する段階と、上記接触部の上記場所に基づいて変化する、上記接触部に対する位置で、カーソルを表示する段階とを備える方法であってよい。方法は、上記接触部がスクリーン端に向かって移動することに応答して、上記接触部に対して中央により近い第１の位置から、上記接触部の中央により近くない第２の位置に上記カーソルを移動させる段階も含んでよい。方法は、スクリーン端への近さに基づいて、上記カーソルを、上記接触部を中心に移動させることも含んでよい。方法は、ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にする段階も含んでよい。方法は、初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、上記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行する段階も含んでよい。方法は、仮想マウスデバイスオブジェクトを通じてマウス入力イベントをオペレーティングシステムにエクスポーズする段階も含んでよい。方法は、カーネルモードドライバを用いて上記仮想マウスデバイスオブジェクトを生成する段階も含んでよい。方法は、上記入力デバイスが、異なるヒューマンインターフェースデバイスパケットにそれぞれ関連付けられたタッチモードまたは仮想マウスモードのどちらであるかを検出することも含んでよい。方法は、未検出のモードの上記パケットをフィルタリングで除去する段階も含んでよい。方法は、仮想マウスモードを実装するためにドライバを用いる段階も含んでよい。
【００５２】
別の例示的な実施形態は、タッチ入力デバイス上での接触部を検出することと、上記接触部の場所を判定することと、上記接触部の上記場所に基づいて変化する、上記接触部に対する位置でカーソルを表示することとを含むシーケンスを実施すべく実行される命令を格納した１または複数の非一時的コンピュータ可読媒体を含んでもよい。上記媒体は、上記接触部がスクリーン端に向かって移動することに応答して、上記接触部に対して中央により近い第１の位置から、上記接触部の中央により近くない第２の位置に上記カーソルを移動させることを含む上記シーケンスを含んでもよい。上記媒体は、スクリーン端への近さに基づいて、上記カーソルを、上記接触部を中心に移動させることを含む上記シーケンスを含んでもよい。上記媒体は、ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にすることを含む上記シーケンスを含んでもよい。上記媒体は、初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、上記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行することを含んでもよい。上記媒体は、仮想マウスデバイスオブジェクトを通じてマウス入力イベントをオペレーティングシステムにエクスポーズすることを含む上記シーケンスを含んでもよい。上記媒体は、カーネルモードドライバを用いて上記仮想マウスデバイスオブジェクトを生成することを含む上記シーケンスを含んでもよい。上記媒体は、上記入力デバイスが、異なるヒューマンインターフェースデバイスパケットにそれぞれ関連付けられたタッチモードまたは仮想マウスモードのどちらであるかを検出することを含む上記シーケンスを含んでもよい。上記媒体は、未検出のモードの上記パケットをフィルタリングで除去することを含む上記シーケンスを含んでもよい。上記媒体は、仮想マウスモードを実装するためにドライバを用いることを含む上記シーケンスを含んでもよい。
【００５３】
別の例示的な実施形態は、タッチ入力デバイス上での接触部を検出し、上記接触部の場所を判定し、上記接触部の上記場所に基づいて変化する、上記接触部に対する位置で、カーソルを表示する、プロセッサと、上記プロセッサに連結された記憶装置とを備える装置であってよい。上記装置は、上記接触部がスクリーン端に向かって移動することに応答して、上記接触部に対して中央により近い第１の位置から、上記接触部の中央により近くない第２の位置に上記カーソルを移動させる上記プロセッサを備えてよい。上記装置は、スクリーン端への近さに基づいて、上記カーソルを、上記接触部を中心に移動させる上記プロセッサを備えてよい。上記装置は、ベンダ非依存カーネルを用いて、タッチベンダカーネルから独立して動作するメカニズムを有効にする上記プロセッサを備えてよい。上記装置は、初期化中にベンダ非依存カーネルをロードし、いかなるプラットフォームオペレーティングシステムにも依存することなく、上記ベンダ非依存カーネルをグラフィクスプロセッシングユニット上で実行する上記プロセッサを備えてよい。
【００５４】
本明細書を通して、「一実施形態」または「実施形態」への言及は、当該実施形態に関連して説明される特定の機能、構造または特徴が、本開示に包含される少なくとも１つの実装に含まれることを意味する。よって、「一実施形態」または「実施形態において」という文言が用いられていても、必ずしも同じ実施形態に言及しているわけではない。さらに、特定の機能、構造または特徴は、図示される特定の実施形態以外の他の適切な形態で設けられてもよく、そのような形態は全て、本願の特許請求の範囲に包含され得る。
【００５５】
限定的な数の実施形態が説明されてきたが、当業者であれば、多数の修正形態および改変形態を理解するであろう。添付の特許請求の範囲が本開示の真の趣旨および範囲に含まれるそのような修正形態および改変形態の全てを対象に含むことが意図されている。
【図１】
0006641570.tif 000002
【図２】
0006641570.tif 000003
【図３】
0006641570.tif 000004
【図４】
0006641570.tif 000005
【図５】
0006641570.tif 000006
【図６】
0006641570.tif 000007
【図７】
0006641570.tif 000008
【図８】
0006641570.tif 000009
【図９】
0006641570.tif 000010
【図１０】
0006641570.tif 000011
【図１１】
0006641570.tif 000012
【図１２】
0006641570.tif 000013
【図１３】
0006641570.tif 000014
【図１４】
0006641570.tif 000015
【図１５】
0006641570.tif 000016
【図１６】
0006641570.tif 000017
【図１７】
0006641570.tif 000018
【図１８Ａ】
0006641570.tif 000019
【図１８Ｂ】
0006641570.tif 000020
【図１９】
0006641570.tif 000021