オペレーティングシステムに依存しないジェスチャのための、デュアルスクリーンによって実装される方法であって:前記デュアルスクリーンデバイスの一つのスクリーンにおいて接触点を検出する接触点検出ステップ;オペレーティングシステムに依存しないジェスチャの存在を決定するジェスチャ決定ステップ;及び前記オペレーティングシステムに依存しないジェスチャに関連する動作を起動するジェスチャ起動ステップ;を有する方法。請求項1に記載の方法であって、前記ジェスチャ決定ステップは、指に基づくタッチと形状に基づくタッチとを区別する方法。請求項1に記載の方法であって、前記オペレーティングシステムに依存しないジェスチャの存在を決定する前記ジェスチャ決定ステップは、前記ジェスチャが認識されたことをユーザに表示するユーザ表示ステップを含む方法。請求項3に記載の方法であって、前記ジェスチャが認識されたことをユーザに表示する前記ユーザ表示ステップは、前記デュアルスクリーンデバイスの前記一つのスクリーン上に仮想キーボードを起動し設置する方法。請求項1に記載の方法であって、さらに、前記一つのスクリーンに現れる仮想キーボードを起動する仮想キーボード起動ステップを有する方法。請求項5に記載の方法であって、さらに、前記仮想キーボードが現れたとき、前記一つ目のスクリーンに存在しているアプリケーションを、前記デュアルスクリーンデバイスの二つ目のスクリーンに配置するアプリケーション配置ステップを有する方法。請求項1に記載の方法であって、さらに、異なるユーザに定義されたオペレーティングシステムに依存しないジェスチャを提供するジェスチャ提供ステップを有する方法。デュアルスクリーンデバイスであって:一つ以上のプロセッサ;前記プロセッサと連結しているメモリ;前記デュアルスクリーンデバイスの一つのスクリーンにおけるタッチ及び形状の情報を特定する接触点認識部;及び前記タッチと形状の情報を処理し、かつ、特定の形状を特定し、かつ、前記特定の形状をあるオペレーティングシステムに依存しないジェスチャへ関連付けるジェスチャ認識部;を有するデュアルスクリーンデバイス。請求項8に記載のデュアルスクリーンデバイスであって、前記接触点認識部及び前記ジェスチャ及び前記ジェスチャ認識部は、カスタマイズされたオペレーティングシステムに依存しないジェスチャを提供するジェスチャエンジンの一部であるデュアルスクリーンデバイス。請求項8に記載のデュアルスクリーンデバイスであって、前記ジェスチャ認識部が仮想キーボードと関連付けられたジェスチャを認識したとき、前記仮想キーボードが起動するデュアルスクリーンデバイス。請求項10に記載のデュアルスクリーンデバイスであって、一つ以上のウィンドウが、前記仮想キーボードが現れた第一のスクリーンから前記デュアルスクリーンデバイスの第二のスクリーンへと移動されるデュアルスクリーンデバイス。請求項10に記載のデュアルスクリーンデバイスであって、認識された前記ジェスチャに基づいて前記仮想キーボードが前記デュアルスクリーンデバイスの第一のスクリーン上の中心に置かれるデュアルスクリーンデバイス。請求項10に記載のデュアルスクリーンデバイスであって、さらに前記デュアルスクリーンデバイスの物理的なケースにタクタイルエイドが設けられているデュアルスクリーンデバイス。請求項13に記載のデュアルスクリーンデバイスであって、前記タクタイルエイドは、前記デュアルスクリーンデバイスの前端に一つ以上の左端インジケータ、左バンプインジケータ、中央隆起インジケータ、右バンプインジケータ及び右端インジケータを含むデュアルスクリーンデバイス。請求項10に記載のデュアルスクリーンデバイスであって、さらにオペレーティングシステムが制御するタッチの情報をオペレーティングシステムへ送信するダイバータロジックを有するデュアルスクリーンデバイス。デュアルスクリーンデバイスにおいて仮想キーボードを起動し、ウィンドウを移動する方法であって:複数の点及び形状に基づくジェスチャから前記仮想キーボードが関連付けられるキーボードに基づくジェスチャを特定するキーボードジェスチャ特定ステップ;前記ウィンドウを前記デュアルスクリーンデバイスの第一のスクリーンから第二のスクリーンへ移動するウィンドウ移動ステップ;前記第一のスクリーン上で前記仮想キーボードを起動するキーボード起動ステップ;及び前記キーボードに基づくジェスチャに関するタッチの位置に基づいて仮想キーボードをセンタリングするキーボード配置ステップを有する方法。請求項16に記載の方法であって、前記キーボードジェスチャ特定ステップは、前記第一のスクリーン上でツーハンズダウンのジェスチャに基づく方法。請求項16に記載の方法であって、前記ウィンドウ移動ステップは、前記第一のスクリーンに前記ウィンドウを再表示することを含み、前記仮想キーボードが非活性化されたとき、互いにウィンドウのZオーダーに基づいてウィンドウが移動され再表示されるウィンドウ再表示ステップを有する方法。請求項16に記載の方法であって、前記キーボード配置ステップは、指の位置と前記仮想キーボードのホーム列に基づいてセンタリングする方法。請求項16に記載の方法であって、さらに、一つ以上の、ツーハンズダウン、スリーフィンガータップ、スウィープ及びグラブの、形状に基づくジェスチャを認識し、区別する方法。ユーザのジェスチャは、デバイス上で動作する特定のオペレーティングシステム又はOSに結び付けられていることがある。デュアルスクリーンタッチパネルデバイスが実装され得る場合には、一つのスクリーンから他方のスクリーンへとアプリケーション又はウィンドウを簡単に動かすジェスチャを提供しない可能性がある。例えば、仮想キーボードを実装しているデュアルスクリーンラップトップにおいて、仮想キーボードが呼び出されると、スクリーンの一つに表示されることがある。仮想キーボードが呼び出される前に、1つ以上のアプリケーション又はウィンドウがそのスクリーン上で存在することがある。そのアプリケーションは、完全に消えるか覆われることがある。特にアプリケーション又はウィンドウを移動するために、OSが提供するジェスチャが利用可能でない可能性がある。さらに、OSによって提供されるジェスチャは、仮想キーボードが消えた時、再び存在したままのアプリケーション又はウィンドウを処理しない可能性がある。デュアルスクリーンデバイス向けの仮想キーボードには短所もある。ある仮想キーボードは、編集可能なフィールドがフォーカスを得るとすぐに表示される、ポップアップウィンドウであることがある。従って、ユーザが単にコンテンツを閲覧したい場合、仮想キーボードは邪魔になる。これによりユーザは、仮想キーボードが表示された後、手動で仮想キーボードを適当な位置に置く必要がある可能性がある。そのような仮想キーボードは、定義済みのアプリケーションとして実行されることがある。仮想キーボードアプリケーションを呼び出したり閉じたりする特定のタッチジェスチャは存在しないこともある。さらに、仮想キーボードは、個人によって使用するために、適切に、センタリングされないこともある。言い換えると、一つの万能サイズのキーボードが提供されることがある。さらに、仮想キーボードは滑らかなので、タッチタイピストを支援するため、キーの位置を適切に認識するためのタクタイルエイドが何ら存在しないことがある。上述した課題を解決し目的を達成するため、本発明にかかる方法は、オペレーティングシステムに依存しないジェスチャのための、デュアルスクリーンによって実装される方法であって:前記デュアルスクリーンデバイスの一つのスクリーンにおいて接触点を検出する接触点検出ステップ;オペレーティングシステムに依存しないジェスチャの存在を決定するジェスチャ決定ステップ;及び前記オペレーティングシステムに依存しないジェスチャに関連する動作を起動するジェスチャ起動ステップ;を有する。また、上述した課題を解決し目的を達成するため、本発明にかかるデュアルスクリーンデバイスは、デュアルスクリーンデバイスであって:一つ以上のプロセッサ;前記プロセッサと連結しているメモリ;前記デュアルスクリーンデバイスの一つのスクリーンにおけるタッチ及び形状の情報を特定する接触点認識部;及び前記タッチと形状の情報を処理し、かつ、特定の形状を特定し、かつ、前記特定の形状をあるオペレーティングシステムに依存しないジェスチャへ関連付けるジェスチャ認識部;を有する。さらに、上述した課題を解決し目的を達成するため、本発明にかかる方法は、デュアルスクリーンデバイスにおいて仮想キーボードを起動し、ウィンドウを移動する方法であって:複数の点及び形状に基づくジェスチャから前記仮想キーボードが関連付けられるキーボードに基づくジェスチャを特定するキーボードジェスチャ特定ステップ;前記ウィンドウを前記デュアルスクリーンデバイスの第一のスクリーンから第二のスクリーンへ移動するウィンドウ移動ステップ;前記第一のスクリーン上で前記仮想キーボードを起動するキーボード起動ステップ;及び前記キーボードに基づくジェスチャに関するタッチの位置に基づいて仮想キーボードをセンタリングするキーボード配置ステップを有する。発明の詳細な説明は、添付されている図面への言及と共に記述される。図面において、参照番号の最も左の数字が、参照番号が最初に現れる図面を特定する。機能や構成要素に言及するための図面全体にわたって同一の番号が用いられる。複数の実施形態は、カスタマイズ可能で、デバイスの使用モデルに固有のものであり、デバイス上で動作するオペレーティングシステムOSに依存しないジェスチャを用いるデュアルスクリーンタッチパネルデバイスの使い勝手を高めるものである。いくつかの実施形態は、一つのスクリーンからもう一つのスクリーンへアプリケーションウィンドウを移動することを可能にするジェスチャを提供する。OSによって無視されるタッチデータを用いて、OSとのデフォルトのユーザインタラクションに影響を及ぼすことなく、ユーザエクスペリエンスを高めるためのカスタムジェスチャがデバイスに追加され得る。いくつかの実装において、例えばラップトップなどのデュアルスクリーンタッチパネルデバイスは、ユーザがさらなるスクリーン空間を欲するとき、仮想キーボードを隠すことができる。ある典型的なOSは、通常、共通のタスクのためのキーボードショートカットを有することがあるため、仮想キーボードが使用されるとき、追加のジェスチャが必要とされることがある。そのうえ、追加のジェスチャは、OSに組み込まれたジェスチャを変更することなく追加され得る。また追加のジェスチャは、動的にジェスチャ認識エンジンに追加され得る、ユーザ定義のカスタムジェスチャを可能にする。このことは、ジェスチャがOSを更新することなく付け足され又は取り去られることを可能にする。言い換えると、前記ジェスチャはOSに依存しない。図1はデュアルスクリーンタッチパネルデバイス以下デバイスという102を表している。前記デバイス102はラップトップコンピュータ又は他のデバイスであっても良い。デバイス102は、上部のタッチパネル面又はB面104、及び、下部のタッチパネル面又はC面106の2つのタッチパネル面を含む。いくつかの実装において、面104及び106はユーザ向けの入力制御手段を提供し、ウィンドウとアプリケーションを表示する。例えば従来のラップトップコンピュータなどのデバイスとは異なり、物理的なキーボードデバイスは提供されない。しかしながら、いくつかの実装においては、ユーザ入力のためにキーボードを実装することが望ましい。デバイス102は、呼び出される仮想キーボード108を提供する。さらに後で説明するように、仮想キーボード108は様々なジェスチャを実装することによって呼び出され、消去されることができる。図2はデバイス102の例示的なアーキテクチャを表す。デバイス102は一つ以上のプロセッサ200、オペレーティングシステム又はOS202及びプロセッサ200に連結されたメモリ204を含めることができる。メモリ204は、RAMRandomAccessMemory、ROMReadOnlyMemory、外部メモリ及び外部メモリを含むただし必ずしもこれらに限定されない様々なタイプのメモリ及び/又はメモリデバイスを含むことができる。さらに、メモリ204は、デバイス102によって使用可能なコンピュータ読み取り可能な命令を含むことができる。ここに記載された構成要素は、メモリ204の一部として統合され又は含まれ得ることが理解されるべきである。デバイス102は、タッチスクリーンハードウェア206を含む。タッチスクリーンハードウェア206は、タッチパネル面104、タッチパネル面106、タッチパネル面104と106の一部であるセンサー及び物理入力装置を有する。タッチスクリーンハードウェア206は、タッチパネル面104と106上で有効化された点の検出を提供する。タッチパネルファームウェア208は、タッチスクリーンハードウェア206の物理的なセンターからデータを抽出することができる。抽出されたデータは、画像データを含んだタッチデータのストリームとして転送される。もしタッチスクリーンハードウェア206上でタッチがなされなければ、何のデータも転送されない。データすなわち、データのストリームは、接触点認識部210へ伝えられる。接触点認識部210は、そのタッチの形状、タッチされた場所及びタッチされた時を決定する。さらに後に説明するように、そのタッチの形状は、実装されたジェスチャの種類を決定する。接触点認識部210は、ジェスチャ認識部212へ形状情報を送る。ジェスチャ認識部212は、接触点認識部210から受け取ったタッチ及び形状情報を処理し、一つの特定の形状と、その形状に関連付けられ得るジェスチャを決定する。ジェスチャ認識部212は、形状の変更、形状の位置/形状の位置の変更もまた決定する。例えば、あるプロプライエタリで高級なタッチアプリケーションプログラムインターフェースAPI214を実装している接触点認識部210は、データをダイバータロジック216に送る。ジェスチャ認識部212は、あるプロプライエタリなジェスチャAPI218を通じて、ダイバータロジック216へデータを送ることもできる。ダイバータロジック216は、接触点認識部210及びジェスチャ認識部212から受け取ったコンテンツ又はデータが転送されるべきかどうか決定する。例えば、もし仮想キーボード108がC面106上でアクティブで動作しているとき、コンテンツやデータを送る必要はない。仮想キーボード108は、C面106からの入力を吸い上げるためである。ダイバータロジック216は、ヒューマンインターフェースドライバHIDAPI220を通じて、オペレーティングシステムヒューマンインターフェースドライバ222へデータを送ることができる。前記オペレーティングシステムヒューマンインターフェースドライバ222は、OS202と通信を行う。接触点認識部210及びジェスチャ認識部212は、OS202から切り離されているので、OS202に含まれる接触点のジェスチャは影響を受けない。例えば、ジェスチャはOS202からは認識されない動作によって引き起こされ得るので、ジェスチャがタッチスクリーン又はC面106上のいかなる場所においてなされ、かつ、アクティブすなわち、ターゲットウィンドウに作用することで、例えばウィンドウフォーカスの変更などのイベントは起きない。加えて、異なるジェスチャが、接触点認識部210及びジェスチャ212が更新されることによって追加され得る。接触点認識部210及びジェスチャ認識部212は、ジェスチャ認識エンジンとみなすことができる。あるプロプライエタリなジェスチャ及び高級なタッチAPI224を通じて、ダイバータロジック216は、アプリケーションレイヤ226へとデータを供給することができる。オペレーティングシステムヒューマンインターフェースドライバ222は、OS固有のタッチAPI228を通じて、アプリケーションレイヤ226へとデータを送信することができる。アプリケーションレイヤ226は、デバイス102上で動作するアプリケーションウィンドウとともに適宜受信したデータすなわち、ジェスチャデータを処理する。先に説明したように、ジェスチャ認識部210は、タッチ及び形状データを認識するために実現される。そのジェスチャ認識部210は、事前にタッチデータを処理し、OS200から分離されている、タッチソフトウェア又はデバイス210のジェスチャ認識部とみなされ得る。さらに、タッチは、例えばフィンガータッチFingerTouch、ブロブBlob及びパームPalmなどのカテゴリによって分類され得る。前記ジェスチャは、点に基づくものと比較して、それらが形状に基づくものである点において、従来の指のタッチに基づくジェスチャと区別される。いくつかの実装において、指のタッチデータは点に基づくものであるので、指のタッチデータだけがOS200に送られても良い。ブロブ及びパームのような形状に基づくタッチは除外することができ、OS200には送られないことができる。しかしながら、ジェスチャ認識部210は全てのタッチデータを受信することができる。一度ジェスチャが認識されると、ジェスチャ処理が開始されたことを示すユーザフィードバックが提供され、OS200からは全てのタッチが隠され、ジェスチャ処理を始めることができる。ジェスチャが完了すなわち、タッチスクリーン上でそれ以上ないしたとき、通常の処理は再開され得る。図3は、ジェスチャ認識及び接触点の出力先変更の処理の例のフローチャートである。処理300は、デバイス102によって実行可能な命令として実装されても良い。手法が示された順序は、制限事項として解釈されることを意図したものではない。示された手法のブロックのいかなる番号も、その手法又は代替の手法を実装するために組み合わせることができる。さらに、個々のブロックは、ここに示された主題の趣旨及び範囲を逸脱せずに、本手法から削除されても良い。さらには、本手法は、本発明の範囲から逸脱せずに、いかなる適切なハードウェア、ソフトウェア、ファームウェア又は組み合わせにおいても実装されてもよい。ブロック302において、タッチスクリーン上で接触点を検出する処理が実行される。その検出は、先に説明したデバイスのC面上で実行され、先に説明した処理がなされても良い。一つのジェスチャの存在に応じて一つの判定が行われるブロック304。もしジェスチャが存在するとき、次のブロック304のYESの分岐にしたがい、ジェスチャが認識されていることを示す表示がなされ得る。例えば、ある透明のフルスクリーンウィンドウが、ユーザの指の下に表示されても良い。ブロック308において、ジェスチャの処理が実行される。前記処理は、図2に関して先に説明したとおりに実行されても良い。もしブロック304において、ジェスチャが存在していない旨の判定がなされたとき、ブロック304のNOの分岐にしたがい、孤立した指のタッチがあるかどうかの判定がなされるブロック310。もし孤立した指のタッチがあるとき、ブロック310のYESの分岐にしたがい、ブロック312において、前記接触点がオペレーティングシステムへと送られる。ブロック314において、他の接触点を待ち、処理はブロック302へと戻る。もし孤立した指のタッチがないとき、ブロック310のNOの分岐にしたがい、ブロック314が実行され、他の接触点を待つ。図4A及び4Bは、ジェスチャの例を表している。4つのジェスチャの例が表されている。しかしながら、他のジェスチャも適用可能であることが予定されており、特に形状に基づくジェスチャについて適用可能であることが予定されている。4つの例示的なジェスチャは以下の通りである。a仮想キーボード108を起動するために用いられてもよいツーハンズダウンTwohandsdown、b反対のスクリーンすなわち、B面上にブラウザのリンクを表示するために用いられてもよいスリーフィンガータップThreeFingerTap、cアクティブなアプリケーションウィンドウを素早く切り替えるために用いられるスウィープSweep、及びd2つのスクリーンの周りで一つのアクティブなウィンドウを素早く移動するために用いられるグラブGrabである。既に説明したように、オペレーティングシステム又はOS202は、前記ジェスチャを認識しないので、オペレーティングシステムを更新することなく多数のジェスチャが付け足され、取り去られることができる。いくつかの実装において、ユーザがカスタムジェスチャを作成できるよう、ジェスチャエディタ例えば、接触点認識部210、ジェスチャ認識部212が提供されても良い。スクリーンのいかなる領域においても、単一のジェスチャ動作は所望の動作を起動することができ、そのことは特定の領域をタッチすることよりも簡単なことがある。一度その動作が開始すると、手順を実行するためにさらに多くの可能性があるため、その動作を実行するためにより低い正確さが必要とされてもよい。例えば、そのようなジェスチャは、お決まりのアプリケーションを起動するためや、素早くシステムをロックするため、その他のタスクを実行するために用いられ得る。そのようなジェスチャの例を以下に説明する。ジェスチャ400は、ツーハンズダウンジェスチャを表す。先に説明したように、デバイス102のようなデュアルスクリーンデバイスは、物理キーボードを有しないことがある。仮想キーボード108は、典型的にはC面で提供される物理キーボードの代わりに、C面106のタッチスクリーン上で使用されることができる。ツーハンズダウンジェスチャは、実際にタッチスクリーンに触れている接触点404-Aから404-Lを用いて、タッチスクリーン上に置かれた手402-A及び402-Bを規定する。接触点404は、ツーハンズダウンジェスチャと関連付けられた、認識形状を提供する。前記ツーハンズダウンジェスチャは、デバイスC面106上で仮想キーボード108を素早く起動するために用いられても良い。ジェスチャ406は、スリーフィンガータップを表す。スリーフィンガータップジェスチャは、共に密着している3本の指を規定する。前記ジェスチャは、一つの手及び実際の接触点410-Aから410-Cを取り込む。そのタッチ処理は、このアクションの接触点410の組を、ブロブ及び/又はブロブから生じた接触点の混合として分類する。接触点410の組は、オペレーティングシステム例えばOS202からは見えない認識されない。スリーフィンガータップジェスチャのアクションは、反対の面例えばB面104上のブラウザウィンドウ内で、タップされたユニバーサルリソースロケータ又はURLを開くために使用されても良い。言い換えれば、もしそのタップがC面106上のブラウザで起こったとき、ブラウザウィンドウはB面104で開くことができる。あるいは、もしタップがB面104上のブラウザ内でなされたとき、URLはC面のブラウザ内に現れても良い。この機能/ジェスチャは、デバイス102のようなデュアルタッチスクリーンデバイスのために、ユニークなインターネットブラウジングのユーザモデルを有効にすることができる。ジェスチャ410は、スウィープジェスチャを表す。スウィープジェスチャは、タッチスクリーン例えば、C面106に接する接触点412-A及び412-B、又は、接触点412-C及び412-Dを規定する。スウィープジェスチャは、カラテチョップのように、タッチスクリーンに触れている手のひらの側面すなわち接触点412を取り込む。スウィープジェスチャと関連付けられ得るアクションは、素早くアプリケーションとアプリケーションを切り替えるためのものであっても良い。ほとんどの、ウィンドウで構成されたオペレーティングシステムにおいて、そのようなアクションすなわち、アプリケーション間で切り替えを行うは、通常キーボードショートカットを使って行われる。しかし、仮想キーボード108は、デュアルスクリーンのラップトップでは常には存在していない可能性があるので、このジェスチャにより素早くアプリケーション間の切り替えを行うことができる。ある例示的な操作において、スウィープジェスチャが最初に開始されたとき、現在実行中のアプリケーションを示すアイコンのリストが、現在アクティブなアプリケーションとともにハイライトされてスクリーン上で表示しても良い。左方向にスウィープするとリストは逆に進み、右方向にスウィープすると前に進む。手がタッチスクリーンの表面から離れたとき、現在選択されているアプリケーションがアクティブになる。ジェスチャ414は、グラブジェスチャを表す。グラブジェスチャは、タッチスクリーンに接触している5つの接触点416-Aから416-E、言い換えればタッチスクリーン上に同時に置かれた5本の指を規定する。既に説明した他のジェスチャとは異なり、グラブジェスチャは、ブロブでないnonblob接触点を含む。しかしながら、前記接触点は、オペレーティングシステム例えばOS202にはみえないすなわち認識されないように認識される。なぜなら、接触点認識ソフトウェア例えば、接触点認識部208は、スクリーン上に3つ以上の接触点が存在するとき、オペレーティングシステム例えば、OS202によって提供されないためである。注目すべきは、ほとんどのユーザは、タッチスクリーンのスキャンレートの範囲内において、タッチスクリーン面状に3本以上の指を常に置いていない可能性があることである。例示的な操作において、グラブジェスチャは、2つのスクリーンすなわち、面104及び106の一つのアクティブなウィンドウを素早く移動するために用いられても良い。グラブジェスチャが認識された後、ユーザは一本の指を除いて全ての指を表面から持ち上げてもよい。そして、動作を起こすため、上、下、左又は右どちらかに動かしても良い。例えば、上への動作が、ウィンドウをB面104へと移動しても良い。下への動作が、ウィンドウをC面106へと移動しても良い。そして左への動作又は右への動作により、現在の面の上にあるウィンドウと、反対の面のウィンドウの循環移動を開始しても良い例えば、方向に依存して、最初に現在のスクリーンでフルスクリーンウィンドウのサイズが変わり、次に現在のスクリーンの左/右半分、次に反対の面の右/左半分、次に反対の面のフルスクリーン、次に反対の面の左/右半分、次に最初の面の右/左半分、次にウィンドウの元の配置。最後のアクションによりユーザは、ウィンドウの端やハンドルを掴むための正確なタッチをすることなく、2つのディスプレイ領域において共通した位置に素早くウィンドウを移動することできる。図5は、仮想キーボード108及びタクタイルエイドを備えるデバイス102を表す。既に説明したように、ツーハンズダウンジェスチャは、C面106上の仮想キーボード108を起動するために使用されることができる。仮想キーボード108は、電力を抑えるため、あるいはユーザによって追加のスクリーン空間が望まれるとき、隠されても良い。既に説明し、さらに以下で説明するように、ジェスチャと方法は、ユーザが隠れた仮想キーボード108を本能的に復元でき、タイピングを快適にするため仮想キーボード108を動的にセットし、仮想キーボード108をより便利にするためにスクリーン上のほかのウィンドウを管理できるよう、提供される。ウィンドウ管理は必須である可能性がある。なぜならば、仮想キーボード108が復元されたとき、仮想キーボード108が表示されていた場所に以前表示されていたコンテンツは覆い隠されるためである。物理的補助器具又はタクタイルエイドは、タッチタイピストが、仮想キーボード108を見ることなくキーの位置をみつけるのを支援するため、デバイス102上に設置されても良い。物理的補助器具は、ユーザの手の位置に関して触覚的なフィードバックを与え、タイピング中にキーボードに視線を落とす必要性を減らすために筋肉の記憶を利用する。既に説明し、かつ後に詳しく説明するように、次のようなコンセプトが実装されてもよい。既に説明したタッチジェスチャは、ユーザが希望するタッチスクリーン面上の場所に動的にキーボードをセットするためのロジックを含む仮想キーボード108を隠し、かつ、復元するために用いられても良い。物理的補助器具又はタクタイルエイドは、タッチスクリーンに対するユーザの手の位置のフィードバックをユーザに与えるため、ラップトップのより低層面の工業上又は物理的な設計に含まれても良い。より低い面上に仮想キーボードが復元されたとき、ユーザがタイピング入力をどこにしているのかわかるように、移動しなければ隠されてしまうウィンドウ又はアプリケーションを動的に移動するロジックが提供されても良い。既に説明したように、ツーハンズダウンジェスチャは、仮想キーボード108を起動して呼び出すために用いられても良い。ツーハンズダウンジェスチャが起動した後、仮想キーボード108が、C面106上に表示される。いくつかの実装において、C面106上に表示される仮想キーボード106は、スクリーン又はC面106の幅を埋める。しかし、全スクリーンC面106は占有しない。これにより、ユーザの望む通りに、キーボードはC面106上で上方向500及び下方向502へ移動できる。例えば、キーボード又はツーハンズダウンジェスチャが検出されたとき、仮想キーボード108は、2つの手の中指他の実装においては、人差し指が検出されるの下に置かれたホーム列すなわち、FとHを有する列と共に、C面106上に垂直に配置されても良い。仮想キーボード108が最初に表示されたとき、無効化されていてもよい。なぜならば、キーボードの停止時間が存在する可能性があるからである。したがって、その時にスクリーン又はC面106に触れることがあっても、キーストロークはタイプされない。仮想キーボード108の位置がセットされ、ユーザはタイピングを開始することができる。仮想キーボード108を隠すため、スウィープジェスチャのようなジェスチャが実装されても良い。他の実装においては、もしユーザが定義したタイムアウトの時間にスクリーン上でタッチがされない場合、仮想キーボード108は自動的に隠れても良い。タッチスクリーンは滑らかであるため、ユーザは、触覚によるフィードバックを得られない。タッチタイピングで利用される触角によるフィードバックは、キーを見ることなくキーをタイプすることを助けるため、物理キーボードによって提供される。ユーザがスクリーン上で自分の指が水平にどこにあるかを見つけるのを助けるため、タクタイルエイド又は物理的支援機器はデバイスのカバー例えば、ノートブック又はラップトップコンピュータの前端に設置されても良い。タクタイルエイド又は物理的支援機器は、ユーザの手首/手のひらがデバイス102のC面106に沿ったどの場所にあるか、ユーザフィードバックを与える。例示的なタクタイルエイドは、左端インジケータ504-A、左バンプ1インジケータ504-B、左バンプ2インジケータ504-C、中央隆起インジケータ504-D、右バンプ1インジケータ504-E、右バンプ2インジケータ504-F及び右端インジケータ504-Gを含む。デバイス102の前端の図が506によって示されている。仮想キーボード108のハンドプレースメントタクタイルエイド又はインジケータ504は、デバイス102のケースの前端506に沿って高くなった構造を提供してもよい。その場所は、仮想キーボード108上でユーザがタイプするとき、手首又は手のひらを普段は休ませる場所である。高くなった構造は、ユーザが感じる程度に十分高くあるべきであるが、バンプがユーザを不快にするほど高くあるべきではない。例示的なインジケータの高さは、1/32インチから3/31インチの範囲内であってもよい。インジケータ504は、もしユーザが手首又は手のひらをデバイス102の前端に置いたとき、ユーザが少なくともインジケータの一つを常に感じることができるよう、設置されても良い。それらのインジケータ505を用いて、ユーザは、デバイスの前端に沿って手の位置についてフィードバックを常に得ることができる。仮想キーボード108の自動垂直配置後述すると併用されるとき、インジケータ504によって、ユーザは、快適にタイプするために手をどこに置く必要があるか感じることができる。ユーザがデバイス102をしばしば使用するとき、ユーザは手首/手のひらでインジケータ504を感じることができ、インジケータ504と相対的に指の位置をマップすることができる。いずれ、ユーザは、タイピングを確認するためにキーボードを見る必要性が減り、キーに関する指の位置を筋肉の記憶を頼ることができる。図6は、仮想キーボード108の実装による予想される予想のウィンドウ配置を表している。例えば、例示的なデュアルスクリーンデバイス例えば、デバイス102は、複数のウィンドウ/アプリケーション及び一つの仮想キーボードを呼び出す。B面104及びC面106は、ある構成600の表示から始まってある構成602の表示になる。構成600において、アプリケーション又はウィンドウ2606及び3608がB面104上に表示されており、ウィンドウ1及び4がC面106上に表示されている。構成602において、仮想キーボード108は、C面106上に呼び出されて起動され、ウィンドウ1604、2606、3608及び4610はB面104へと移動されている。仮想キーボード108がC面106上に表示されるとき、スクリーン全体を覆うので、スクリーンはアプリケーションウィンドウを閲覧するためにはもはや使用できない。さらに重要なことには、もしウィンドウ1604又はウィンドウ4610のような、仮想キーボード108の入力のためのアクティブなアプリケーションウィンドウが存在すると、ユーザはもはやタイプした通りのキーストロークの表示から文字列を理解することができない。これを予期して、仮想キーボード108が表示されたとき、ユーザが見ることができるよう、C面のウィンドウはB面スクリーンへと移動される。このウィンドウの移動によって、あるウィンドウが他のウィンドウに対して相対的に可視となる、ディスプレイの順序又はZオーダーZorderは変わらない。この例では、ウィンドウ604、606、608及び610はそれらの表示順序又はZオーダーに従って番号が付されている。もし全てのウィンドウが同一の左上座標に位置していたとき、ウィンドウ1604が一番上となり、ウィンドウ2606がウィンドウ1604の下になり、ウィンドウ3308がウィンドウ2の下になり、ウィンドウ4610が一番下になる。この例では、構成600において、アクティブなアプリケーションウィンドウは、ウィンドウ160である。このウィンドウは、キーボード入力を受けつけるウィンドウとなる。仮想キーボードが有効化構成602されたとき、ウィンドウ1604及びウィンドウ4610は、B面106のスクリーン上で同一の相対座標へと移動される。いくつかのオペレーティングシステムは、アプリケーションを終了することなくスクリーン空間を使えるようにするためのアプリケーションウィンドウの最小化と、ウィンドウをその前の状態へと復元させる機能をサポートしていることも注意すべきである。この例では、もしウィンドウ4610が、仮想キーボード108が有効化される前に最小化され、次に仮想キーボード108が有効になっている間に復元されたとき、ウィンドウ4610はキーボードによって隠される。この方法は、そのような状況に対処するものである。もし、C面106上のウィンドウが最小化され、続いて仮想キーボード108が有効化され、ユーザが仮想キーボードが有効である間にウィンドウをアクティブにしたとき、そのウィンドウはB面104に復元される。構成602は、移動後のウィンドウの位置を表している。ウィンドウ4610は、ウィンドウ3608によって隠されているため、もはや見ることができない。ウィンドウ1604は、アクティブなウィンドウであるため、現在ウィンドウ2606の上にある。仮想キーボード108が隠されたとき、全ての移動されたウィンドウは、それらの元のスクリーンすなわち、構成600へ戻る。もしウィンドウ例えば、ウィンドウ1604及び4610が、B面104上で移動されていたとき、それらはC面106上で同じ相対位置へ移動される。図7は、仮想キーボードを呼び出し、ウィンドウの位置を決めるための例示的な処理700についてのフローチャートである。処理700は、デバイス102によって実行される実行可能な命令として実装されても良い。手法が示された順序は、制限事項として解釈されることを意図したものではない。示された手法のブロックのいかなる番号も、その手法又は代替の手法を実装するために組み合わせることができる。さらに、個々のブロックは、ここに示された主題の趣旨及び範囲を逸脱せずに、本手法から削除されても良い。さらには、本手法は、本発明の範囲から逸脱せずに、いかなる適切なハードウェア、ソフトウェア、ファームウェア又は組み合わせにおいても実装されてもよい。手のジェスチャが検出されたかどうかについて、判定が行われる。もし手のジェスチャが検出されなければ、ブロック702のNOの分岐にしたがって、手のジェスチャが検出されるまで判定が行われる。もし手のジェスチャが検出されると、ブロック702のYESの分岐にしたがって、次にブロック704が実行される。ブロック704において、指の位置についての計算が行われる。この例では、指は中指である。しかし、他の指すなわち、人差し指が使われても良い。具体的には、中指のY位置が検出される。第二の手のジェスチャが検出されると、判定が行われる。もし第二の手のジェスチャが検出されると、ブロック7のYESの分岐にしたがって、ブロック708が実行される。ブロック708において、第一の手のジェスチャの指のY位置と第二の手のジェスチャの指のY位置との平均値が求められる。第二の手のジェスチャが認識されなければ、ブロック706のNOの分岐にしたがって、あるいはブロック708の実行の後、ブロック710が実行される。ブロック710において、一つの手のジェスチャ又は二つの手のジェスチャのY位置の平均のいずれかのY位置に、ホーム列すなわち、J及びKを含む列とともに無効化された仮想キーボード例えば、仮想キーボード108が表示される。ブロック712において、仮想キーボードが起動される呼び出されるとき、一つの面上、言い換えればC面上で動作しているウィンドウ又はアプリケーションは、他の面、言い換えればB面へと移動させられる。もしユーザの手がスクリーンから離れると、判定が行われる。もし手がスクリーンから離れていないと判定されると、ブロック714のNOの分岐にしたがって、ブロック704が実行される。もし手がスクリーンから離れていると判定されると、ブロック714のYESの分岐にしたがって、ブロック716が実行される。ブロック716において、仮想キーボード例えば仮想キーボード108の有効化が実行され、仮想キーボードへのタッチとキーストロークが可能になり、受け入れられる。規定のタイムアウト期間の経過後にユーザがスクリーンから手を離したかどうか、もしくは、スリープに入るか仮想キーボードを無効化させるキーボードジェスチャ例えば、スウィープジェスチャが実行されたかどうかについて、判定がなされる。もしそのようなタイムアウト又はジェスチャが判定されなかったとき、ブロック718のNOの分岐にしたがって、ブロック716が実行され続ける。もしそのような判定がなされれば、ブロック716のYESの分岐にしたがって、ブロック720が実行される。ブロック720において、リターンリストに基づいて全てのウィンドウとアプリケーションの配置又は移動が実行される。具体的には、仮想キーボードが起動され呼び出されるより前にC面にあったウィンドウ又はアプリケーションは、C面の前の位置へと戻される。ここで提示された図及び他のフロー図に関しては例示された方法の詳細が示されているが、環境次第で、図に表されたいくつかの振る舞いは説明された順に実行される必要はなく、かつ、修正されてもよく、かつ/又は丸ごと除外されてもよいことが理解されるべきである。このアプリケーションにおいて説明されたように、モジュール及びエンジンは、ソフトウェア、ハードウェア、ファームウェア又はそれらの組み合わせを用いて実装されても良い。さらに、説明された振る舞い及び方法は、一つ以上のコンピュータが読み取り可能なストレージメディアCRSMを含むメモリに保存された命令に基づいて、コンピュータ、プロセッサ又は他のコンピューティングデバイスによって実装されても良い。前記CRSMは、保管された命令を実装するためのコンピューティングデバイスによってもアクセス可能な、いかなる利用可能な物理メディアであってもよい。CRSMは、RAMRandomAccessMemory、ROMReadOnlyMemory、EEPROMElectricallyErasableProgrammableReadOnlyMemory、フラッシュメモリ又は他のソリッドステートメモリ技術、CD-ROMCompactDiskReadOnlyMemory、DVDDigitalVersatileDisks又は他の光ディスクストレージ、磁気ディスクストレージ又は他の時期ストレージデバイス又は希望する情報を記録でき、コンピューティングデバイスによってアクセス可能な他のいかなる媒体を含んでよい。