(57)【要約】  本開示の実施形態例は、クライアント上の仮想デスクトップのビューをスクロールすることに関する。クライアントは、ディスプレイドライバーを有するサーバーと通信中であってよい。サーバーは、イメージを表す信号をクライアントに送信するように構成でき、クライアントは、イメージを仮想デスクトップに描画するように構成できる。クライアントは、仮想デスクトップの一部分を含む仮想デスクトップのビューをレンダリングし、ユーザー入力を追跡し、ユーザー入力に応答してビューをパンするように構成できる。
2011520209.tif 000002
【特許請求の範囲】
【請求項１】
仮想デスクトップ（３０２）をナビゲートする方法であって、
リモートコンピューターから受信された形状情報から、前記リモートコンピューター（２０４）のディスプレイドライバーのディスプレイ解像度を有する仮想デスクトップ（３０６）を生成するステップと、
前記リモートコンピューター（２０４）から受信されたグラフィックス（３０６）を前記仮想デスクトップ（３０２）に描画するステップと、
前記仮想デスクトップ（３０６）のビュー（３０４）をレンダリングする（３０６）ステップであって、前記ビュー（３０４）はエッジによって画定され、前記仮想デスクトップ（３０２）の一部分を示すステップと、
相対的カーソル移動情報を受信する（３０８）ステップと、
前記相対的カーソル移動情報および前記ビュー（３０４）の前記エッジから、カーソルが前記ビュー（３０４）のエッジに到達したことを判定する（３０８）ステップと、
前記仮想デスクトップ（３０２）の前記ビュー（３０４）を前記相対的カーソル移動の方向にスクロールする（３０８）ステップと
を含むことを特徴とする方法。
【請求項２】
線形加速因数を前記相対的カーソル移動情報に適用する（３０８）ステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記カーソル（３１０）の速さを決定する（３０８）ステップと、
動的加速因数（３０８）を生成するステップであって、前記動的加速因数は前記カーソルの前記速さの関数であるステップと、
前記動的加速因数を前記相対的カーソル移動情報に適用する（３０８）ステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記形状情報は、境界ボックス（２５４）、および前記リモートコンピューター（２０４）のディスプレイレイアウトを画定する情報を含み、さらに前記境界ボックスの前記ディスプレイ解像度は前記リモートコンピューター（２０４）の第１のディスプレイドライバーおよび第２のディスプレイドライバーからのディスプレイ解像度情報から計算される（２５４）ことを特徴とする請求項１に記載の方法。
【請求項５】
前記リモートデバイスの前記第１のディスプレイドライバーおよび前記第２のディスプレイドライバー用の前記ディスプレイ解像度情報を受信する（２０１）ステップと、
前記ディスプレイ解像度情報から前記第１のディスプレイドライバーおよび前記第２のディスプレイドライバー用のエッジを決定する（３０６）ステップと
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記ビューを画定するエッジおよび前記第１のディスプレイドライバーおよび前記第２のディスプレイドライバーを画定する前記エッジから、前記ビューのエッジが前記第１のディスプレイドライバーのエッジに到達したことを判定する（３０８）ステップと、
前記カーソルの前記速さが所定の値より大きいことを判定する（３０８）ステップと、
前記仮想デスクトップの前記ビューを前記第２のディスプレイドライバーに関連付けられた遠方エッジまでスクロールする（３０８）ステップと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記カーソルの座標情報および前記第１のディスプレイドライバーおよび前記第２のディスプレイドライバーを画定する前記エッジの座標情報から、前記カーソルが前記第１のディスプレイドライバーのエッジに到達したことを判定する（３０８）ステップと、
触覚応答を生成する（３０８）ステップと
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
仮想デスクトップ（３０２）をナビゲートするためのコンピューター読み取り可能な命令を収めたコンピューター読み取り可能なストレージ媒体であって、
リモートコンピューター（２０４）から受信されたグラフィックスを示す仮想デスクトップ（３０２）のビューをレンダリングする（３０６）ための命令であって、前記ビュー（３０４）はピクセルの範囲によって画定され、前記仮想デスクトップ（３０２）はリモートコンピューター（２０４）のディスプレイ解像度に相当するピクセルの範囲によって画定される、命令と、
相対的カーソル移動情報を受信する（３０８）ための命令と、
前記相対的カーソル移動情報および前記ビュー（３０４）を画定する前記ピクセルの範囲から、カーソル（３１０）が前記ビュー（３０４）のエッジに到達したことを判定する（３０８）ための命令と、
仮想デスクトップのビュー（３０４）を前記相対的カーソル移動の方向にスクロールする（３０８）ための命令と
を含むことを特徴とするストレージ媒体。
【請求項９】
前記仮想デスクトップ（３０２）を複数のゾーンに分割する（３０８）ための命令と、
各ゾーンをキーボードのキーに割り当てる（３０８）ための命令と、
特定のゾーンに割り当てられたキーの選択を受信する（３０８）ための命令と、
前記キーの前記選択に応答して前記ビュー（３０４）を前記特定のゾーンにセンタリングするための命令と
を含むことを特徴とする請求項８に記載のコンピューター読み取り可能なストレージ媒体。
【請求項１０】
ミニマップ（３１６）を前記ビュー（３０４）にレンダリングする（３０６）ための命令であって、前記ミニマップは前記仮想デスクトップ（３０２）のスケール化イメージおよび前記ビュー（３０４）のスケール化イメージを示す、命令
をさらに含むことを特徴とする請求項８に記載のコンピューター読み取り可能なストレージ媒体。
【請求項１１】
前記ミニマップは前記仮想デスクトップ（３０２）のワイヤフレームイメージおよび前記ビュー（３０４）のワイヤフレームアウトラインを含むことを特徴とする請求項１０に記載のコンピューター読み取り可能なストレージ媒体。
【請求項１２】
ユーザー入力を前記リモートコンピューター（２０４）に送信する（２０１）ための命令であって、前記リモートコンピューター（２０４）は前記ユーザー入力に応答してプログラムを実行するように構成される、命令と、
前記プログラム用のユーザーインターフェイスを表すグラフィックスを受信する（３０６）ための命令と、
前記プログラム用の前記ユーザーインターフェイスのスケール化イメージで前記ミニマップ（３１６）を更新する（３０６）命令と
をさらに含むことを特徴とする請求項１０に記載のコンピューター読み取り可能なストレージ媒体。
【請求項１３】
前記仮想デスクトップ上の前記ユーザーインターフェイスの位置を示す座標を受信する（３０６）ための命令と、
ユーザー入力を受信する（３０８）ための命令と、
前記ユーザー入力に応答して前記ビューを前記ユーザーインターフェイスにセンタリングする（３０６）ための命令と
をさらに含むことを特徴とする請求項１２に記載のコンピューター読み取り可能なストレージ媒体。
【請求項１４】
仮想デスクトップ（３０２）のビュー（３０４）をレンダリングする（３０６）ための回路であって、前記仮想デスクトップ（３０２）は、リモートコンピューター（２０４）のディスプレイ解像度に相当する第１のピクセルの範囲によって画定され、前記ビュー（３０４）は第２のピクセル範囲によって画定される、回路と、
カーソル移動情報を受信する（３０８）ための回路と、
前記カーソル移動情報および前記第２のピクセル範囲から、カーソルが前記第２のピクセル範囲のエッジに到達したことを判定する（３０８）ための回路と、
前記ビュー（３０４）を前記カーソル移動の方向にスクロールするための回路と
を含むことを特徴とするコンピューターシステム。
【請求項１５】
ミニマップ（３１６）を前記ビューにレンダリングする（３０６）ための回路であって、前記ミニマップは前記仮想デスクトップ（３０２）のスケール化イメージおよび前記ビュー（３０４）のスケール化イメージを示す、回路
をさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記仮想デスクトップ（３０２）に生成されたプログラムのユーザーインターフェイス用のピクセル座標を受信するための回路と、
前記プログラムの前記ユーザーインターフェイス用の識別子を前記ミニマップ（３１６）に生成するための回路と
をさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記ビューをスクロールするための前記回路は、
線形加速因数を前記カーソル移動情報に適用する（３０８）ための回路
をさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１８】
前記ビューをスクロールするための前記回路は、
前記カーソルの前記速さを決定する（３０８）ための回路と、
動的加速因数を生成する（３０８）ための回路であって、前記動的加速因数は前記カーソルの前記速さの関数である、回路と、
前記動的加速因数を前記カーソル移動情報に適用する（３０８）ための回路と
をさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１９】
前記第１のピクセル範囲は、
第１のディスプレイドライバーのディスプレイ解像度および前記リモートコンピューター（２０４）の第２のディスプレイドライバーの第２のディスプレイ解像度にさらに対応し、さらに前記第１のディスプレイドライバーの前記ディスプレイ解像度は第１のエッジによって画定され、前記第２のディスプレイドライバーの前記ディスプレイ解像度は第２のエッジによって画定されることを特徴とする請求項１４に記載のシステム。
【請求項２０】
前記カーソル（３１０）が前記第１のディスプレイドライバーの前記ディスプレイ解像度の特定のエッジに到達したことを判定する（３０８）ための回路であって、前記特定のエッジは前記第２のディスプレイドライバーの特定のエッジに隣接する、回路と、
前記ビューを、前記第２のディスプレイドライバーに対応する前記仮想デスクトップのエリアにセンタリングする（３０６）ための回路と
をさらに含むことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想デスクトップをナビゲートするための、方法、及びこれを実行する命令を記憶するコンピューター読み取り可能記録媒体、及び、システムに関する。
【背景技術】
【０００２】
リモートコンピューティングシステムでは、ユーザーは、リモートコンピューターによってホストされるリソースへアクセスすることができる。リモートコンピューティングシステムでは、絶対に必要なコンポーネントはクライアントおよびサーバーである。このシステムでのサーバーはプログラムを実行し、ＴＣＰ／ＩＰプロトコルなどの通信プロトコルを使用して、接続するクライアントへユーザーインターフェイスを表す信号を送信する。各接続元クライアントはセッション、例えば、リソースのセットを含む実行環境が提供される。各クライアントはユーザー入力を表す信号をサーバーに送信し、サーバーは、そのユーザー入力を適切なセッションに適用する。
【０００３】
一般的に、クライアントがサーバーに接続すると、サーバーのディスプレイドライバー（複数可）が特定のディスプレイ解像度でユーザーインターフェイスを生成することができる。状況によっては、サーバーのディスプレイ解像度は、クライアントのディスプレイ解像度より高いことがある。このアーキテクチャーでは、セッションのユーザーインターフェイスはサーバーによって生成され、クライアントではレンダリングされるだけなので、クライアントは、セッションがクライアント上でどのように見えるかを変更するためにサーバーのディスプレイ設定値を変更する必要があるだろう。
【０００４】
しかし、状況によっては、クライアントを配慮してディスプレイ設定値を変更することは望ましくないことがある。例えば、サーバーのディスプレイは、ユーザーに技術サポートを提供するためにクライアントがリモートで接続されている間、ユーザーインターフェイスをレンダリングするように、またはユーザーとプロジェクトで協働的に働くように構成できる。サーバーのディスプレイ設定値がクライアントに対応するように調整されると、サーバーのオペレータのユーザー経験は減少するであろう。別の状況では、クライアントの最適な解像度がサーバーのディスプレイドライバーでサポートされないこともある。この状況では、ディスプレイ設定値を変更すると、サーバーにアタッチされた物理的なディスプレイを損傷させることすらありえる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現在の手法は、ユーザーインターフェイスのビューをスクロールするためにスクロールバー、例えば、グラフィカルウィジェットを提供している。スクロールバーが移動するにつれて、ユーザーインターフェイスのビューはパンされる。しかし、この手法は煩わしく、通常の作業の流れを中断する。例えば、ファイルをユーザーインターフェイスの一端から他端までドラッグしたいユーザーは、ファイルをＵＩの示された一部分のエッジまでドラッグし、スクロールバーを全体にわたって動かし、ファイルを所望の位置までドラッグしなければならない。別の例では、複数の物理的モニタにまたがったユーザーインターフェイスで作業するユーザーは、注意の焦点を変更するにつれて、当然ながら、カーソルを１つのモニタから別のモニタへ移動させる。ユーザーがユーザーインターフェイスの異なる部分を表示するためにスクロールバーを動かす必要があれば、この自然な作業の流れは中断される。そのため、ユーザーインターフェイスをナビゲートするための、より自然な直観的方法を提供することが望ましい。
【課題を解決するための手段】
【０００６】
本開示の一実施形態例は、限定ではないが、リモートコンピューターから受信された形状情報から、リモートコンピューターのディスプレイドライバーのディスプレイ解像度を有する仮想デスクトップを生成するステップと、リモートコンピューターから受信されたグラフィックスを仮想デスクトップに描画するステップと、仮想デスクトップのビューをレンダリングするステップであって、ビューはエッジによって画定され、仮想デスクトップの一部分を示すステップと、相対的カーソル移動情報を受信するステップとを含む方法を説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
【０００７】
本開示の一実施形態例は、限定ではないが、リモートコンピューターから受信されたグラフィックスを示す仮想デスクトップのビューをレンダリングするための命令であって、ビューはピクセルの範囲によって画定され、仮想デスクトップはリモートコンピューターのディスプレイ解像度に相当するピクセルの範囲によって画定される命令と、相対的カーソル移動情報を受信するための命令と、相対的カーソル移動情報およびビューを画定するピクセルの範囲から、カーソルがビューのエッジに到達したことを判定するための命令と、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするための命令とを含むコンピューター読み取り可能な命令を収めたコンピューター読み取り可能なストレージ媒体を説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
【０００８】
本開示の一実施形態例は、限定ではないが、仮想デスクトップのビューをレンダリングするための回路であって、仮想デスクトップは、リモートコンピューターのディスプレイ解像度に相当する第１のピクセルの範囲によって画定され、ビューは第２のピクセル範囲によって画定される回路と、カーソル移動情報を受信するための回路と、カーソル移動情報および第２のピクセル範囲から、カーソルが第２のピクセル範囲のエッジに到達したことを判定するための回路と、ビューをカーソル移動の方向にスクロールするための回路とを含むコンピューターシステムを説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
【０００９】
当業者は、本開示の１つまたは複数の様々な態様が、限定ではないが、本明細書で参照される本開示の態様を実施するための回路および／またはプログラミングを含むことができ、その回路および／またはプログラミングは、実際には、システム設計者の設計選択に応じて、本明細書で参照される態様を実施するように構成されたハードウェア、ソフトウェア、および／またはファームウェアの任意の組み合わせが可能なことが理解できよう。
【００１０】
前述のことは概要であり、そのため、必然的に、詳細の簡略化、一般化および省略を含む。当業者は、概要は例示にすぎず、決して限定として意図されていないことが理解できよう。
【図面の簡単な説明】
【００１１】
【図１】本開示の態様を実施できるコンピューターシステムの例を示した図である。
【図２】本開示の態様を実施できる端末サーバーの例を示した図である。
【図３】本開示の態様を実施できるクライアントの例を示した図である。
【図４】本開示の態様を実行するためのフローチャートの例を示した図である。
【図５】図４の動作手順４００の代替的実施形態を示した図である。
【図６】図５の動作手順４００の代替的実施形態を例示した図である。
【図７】図６の動作手順４００の代替的実施形態を例示した図である。
【図８】本開示の態様を実行するためのフローチャートの例を示した図である。
【図９】図８の動作手順８００の代替的実施形態を例示した図である。
【図１０】図９の動作手順８００の代替的実施形態を例示した図である。
【図１１】図１０の動作手順８００の代替的実施形態を例示した図である。
【図１２】本開示の態様を実行するためのフローチャートの例を示した図である。
【図１３】図１２の動作手順１２００の代替的実施形態を示した図である。
【図１４】図１３の動作手順１２００の代替的実施形態を示した図である。
【図１５】図１４の動作手順１２００の代替的実施形態を示した図である。
【図１６】図１５の動作手順１２００の代替的実施形態を示した図である。
【発明を実施するための形態】
【００１２】
本開示の多数の実施形態がコンピューター上で実行できる。図１および以下の説明は、本開示を実施できる適切なコンピューティング環境の簡潔な概略を提供するように意図されている。当業者は、図１のコンピューターシステムは、一部の実施形態では、図２のサーバー２０４および図３のクライアント２０１を達成できることが理解できよう。これらの実施形態例では、サーバー２０４およびクライアント２０１は、図１で説明されるコンポーネントの一部または全部を含むことがあり、一部の実施形態では、サーバー２０４およびクライアント２０１は、本開示の具体的な態様をインスタンス化するように構成された回路を含むことがある。例えば、本開示全体で使用される用語「回路」は、ファームウェアまたはスイッチによって機能（複数可）を実行するように構成された専用のハードウェアコンポーネントを含むことがある。他の実施形態例では、用語「回路」は、機能（複数可）を実行するように動作可能なロジックを実施するソフトウェア命令によって構成された汎用プロセッシングユニット、メモリなどを含むことがある。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、作成者は、ロジックを実施するソースコードを書くことができ、ソースコードは機械読み取り可能なコードにコンパイルされ、そのコードを汎用プロセッシングユニットが処理することができる。当業者は、最新の技術がハードウェア、ソフトウェア、またはハードウェア／ソフトウェアの組み合わせの違いはほとんどない程度にまで進化していることを理解できるので、具体的な機能を達成するためのハードウェア対ソフトウェアの選択は、作成者に任された設計上の選択である。より具体的には、当業者は、ソフトウェアプロセスは同等のハードウェア構造に変換でき、ハードウェア構造は自体が同等のソフトウェアプロセスに変換できることが理解できよう。そのため、「ハードウェアの実装」対「ソフトウェアの実装」の選択は、設計上の選択であり、作成者に任される。
【００１３】
ここで図１を参照すると、例示の汎用コンピューティングシステムが示されている。汎用コンピューティングシステムは、プロセッシングユニット２１、システムメモリ２２、システムメモリなどの各種システムコンポーネントをプロセッシングユニット２１に結合するシステムバス２３を含む、従来のパーソナルコンピューター２０等を含むことが可能である。システムバス２３は、いくつかのタイプのバス構造のうちの、様々なバスアーキテクチャーの任意のものを使用するメモリバス、メモリコントローラー、周辺バス、およびローカルバスなど、任意のバス構造でよい。システムメモリには、ＲＯＭ（読み取り専用メモリ）２４、ＲＡＭ（ランダムアクセスメモリ）２５がある。起動中などにパーソナルコンピューター２０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（基本入出力システム）２６がＲＯＭ２４に保管されている。パーソナルコンピューター２０は、ハードディスク（図示せず）から読み取り、ハードディスクに書き込むためのハードディスクドライブ２７、取り外し可能磁気ディスク２９から読み取るか、または取り外し可能磁気ディスク２９に書き込むための磁気ディスクドライブ２８、および取り外し可能光ディスク３１、例えば、ＣＤ  ＲＯＭまたは他の光媒体から読み取るか、または取り外し可能光ディスク３１、例えば、ＣＤ  ＲＯＭまたは他の光媒体に書き込むための光ディスクドライブ３０をさらに含むことが可能である。一部の実施形態例では、本開示の態様を実施するコンピューター実行可能な命令は、ＲＯＭ２４、ハードディスク（図示せず）、ＲＡＭ２５、取り外し可能磁気ディスク２９、光ディスク３１、および／またはプロセッシングユニット２１のキャッシュに保管できる。ハードディスクドライブ２７、磁気ディスクドライブ２８および光ディスクドライブ３０は、それぞれ、ハードディスクドライブインターフェイス３２、磁気ディスクドライブインターフェイス３３、および光ドライブインターフェイス３４によってシステムバス２３に接続されている。ドライブおよびそれに関連付けられたコンピューター読み取り可能な媒体は、パーソナルコンピューター２０用のコンピューター読み取り可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書で説明される例示の環境はハードディスク、取り外し可能磁気ディスク２９および取り外し可能光ディスク３１を使用するが、当業者は、コンピューターがアクセス可能なデータを保管できる他のタイプのコンピューター読み取り可能な媒体、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、Ｂｅｒｎｏｕｌｌｉ（ベルヌーイ）カートリッジ、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み取り専用メモリ）、なども例示の動作環境で使用できることを理解されたい。
【００１４】
ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４またはＲＡＭ２５にオペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７およびプログラムデータ３８など、多数のプログラムモジュールを保管できる。ユーザーは、キーボード４０およびポインティングデバイス４２などの入力デバイスからパーソナルコンピューター２０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星ディスク、スキャナーなどがある。これらの入力デバイスおよび他の入力デバイスは、多くの場合、システムバスに結合されたシリアルポートインターフェイス４６を介してプロセッシングユニット２１に接続されるが、他のインターフェイス、例えば、パラレルポート、ゲームポートまたはＵＳＢ（ユニバーサルシリアルバス）などによって接続されてもよい。ディスプレイ４７または他のタイプのディスプレイデバイスも、ビデオアダプター４８などのインターフェイスを介してシステムバス２３に接続できる。ディスプレイ４７に加えて、パーソナルコンピューターは、一般的に、他の周辺出力デバイス（図示せず）、例えば、スピーカーおよびプリンターなどを含む。図１の例示のシステムは、ホストアダプター５５、ＳＣＳＩ（スモールコンピューターシステムインターフェイス）バス５６、およびＳＣＳＩバス５６に接続された外部ストレージデバイス６２も含む。
【００１５】
パーソナルコンピューター２０は、リモートコンピューター４９などの１つまたは複数のリモートコンピューターとの論理的接続を使用するネットワーク環境で動作することができる。リモートコンピューター４９は、別のパーソナルコンピューター、サーバー、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般ネットワークノードでよく、通常は、パーソナルコンピューター２０に関して上述された要素の多くまたは全部を含むことが可能であるが、図１には、メモリストレージデバイス５０のみが例示されている。図１に示された論理的接続は、ＬＡＮ（ローカルエリアネットワーク）５１およびＷＡＮ（ワイドエリアネットワーク）５２を含んでよい。そのようなネットワーク接続する環境は、オフィス、企業全体のコンピューターネットワーク、イントラネットおよびインターネットでは普通である。
【００１６】
ＬＡＮネットワーキング環境で使用される場合、パーソナルコンピューター２０は、ネットワークインターフェイスまたはネットワークアダプター５３を介してＬＡＮ５１に接続できる。ＷＡＮネットワーキング環境で使用される場合、パーソナルコンピューター２０は、通常、モデム５４、またはインターネットなどのワイドエリアネットワーク５２を介して通信を確立するための他の手段を含むことが可能である。モデム５４は、内蔵でも、外付けでもよいが、シリアルポートインターフェイス４６を介してシステムバス２３に接続できる。ネットワーク環境では、パーソナルコンピューター２０に関して示されたプログラムモジュール、またはプログラムモジュールの部分はリモートメモリストレージデバイスに保管できる。示されたネットワーク接続は例示であって、コンピューター間に通信リンクを確立するための他の手段が使用できることを理解されたい。さらに、本開示の多くの実施形態が特にコンピューター化されたシステムに良く適合すると想像されているが、この文書中の何物も、本開示をそのような実施形態に限定することは意図されていない。
【００１７】
ここで図２および図３を参照すると、それらは、本開示の態様が実施できる環境の例を概略的に示している。当業者は、図２および図３に示された要素の例は、本開示を説明するための運用上の枠組みを提供するために示されていることが理解できよう。したがって、一部の実施形態では、各環境の物理的レイアウトは、実施構想の違いに応じて異なる可能性がある。そのため、運用上の枠組みの例は、例示としてのみ扱われるべきであり、決して特許請求の範囲を限定するものではない。当業者は、以下は紹介のための説明であり、図２および図３に示された要素は、図４から図１６で示される動作手順の説明でより詳しく解説されることも理解できよう。
【００１８】
一般的に、図２は、本開示の態様を含むように構成できるサーバー環境のハイレベルな概要を示している。図２を参照すると、端末サーバーを達成するように構成された回路を含むことが可能なサーバー２０４が示されている。または、他の実施形態では、サーバー２０４は、リモートデスクトップ接続をサポートするように構成された回路を含むことが可能である。示された例では、サーバー２０４は、クライアントを接続するために１つまたは複数のセッション、例えば、セッション１からＮ（Ｎは２より大きい整数）を生成するように構成できる。簡潔に言えば、本開示の実施形態例におけるセッションは、一般的に、サーバー２０４のカーネル２１４と対話するように構成される複数のサブシステム、例えば、ソフトウェアコードによって達成される動作環境を含めることが可能である。例えば、セッションは、デスクトップウィンドウなどのユーザーインターフェイスをインスタンス化するプロセス、ウィンドウ内のマウスの動きを追跡するサブシステム、アイコンのマウスクリックを、プログラムのインスタンスを達成するコマンドに変換するサブシステムなどを含むことが可能である。セッションは、例えば、サーバー２０４がクライアント２０１からネットワーク接続を介して接続要求を受信した時、サーバー２０４がユーザーごとに生成できる。一般的に、接続要求は、例えば、サーバー２０４の回路によって達成できるトランスポートロジック２１０によって最初に処理できる。トランスポートロジック２１０は、一部の実施形態では、ネットワークアダプター、ファームウェア、および接続メッセージを受信して、それらをエンジン２１２に転送するように構成できるソフトウェアを含むことが可能である。図２に例示されているように、トランスポートロジック２１０は、一部の実施形態では、各セッション用のプロトコルスタックインスタンスを含んでよい。一般的に、各プロトコルスタックインスタンスは、ユーザーインターフェイスの出力をクライアントに経路指定し、クライアントから受信されたユーザー入力を、そのセッションに関連付けられたセッションコア２４４に経路指定するように構成できる。
【００１９】
図２の概括的な説明を続けると、本開示の一部の実施形態例におけるエンジン２１２は、セッション用の要求を処理し、各セッション用の機能を決定し、セッションに１セットの物理的リソースを割り振ることによりセッションを生成し、そのセッション用にプロトコルスタックインスタンスをインスタンス化するように構成できる。一部の実施形態では、エンジン２１２は、上述の動作手順の一部を実施できる専用回路コンポーネントによって達成できる。例えば、一部の実施形態例における回路は、メモリ、およびエンジン２１２を達成するコードを実行するように構成されたプロセッサを含むことが可能である。図２に示されているように、一部のインスタンスでは、エンジン２１２は接続要求を受信し、例えば、ライセンスがあり、その要求に対してセッションが構成できることを判定できる。サーバー２０４が、リモートデスクトップ機能を含むリモートコンピューターである状況では、エンジン２１２は、接続要求に応答して、ライセンスの有無をチェックせずにセッションを生成するように構成できる。図２に例示されているように、セッションマネージャー２１６は、エンジン２１２からのメッセージを受信するように構成できて、そのメッセージに応答して、セッションマネージャー２１６は、テーブルにセッション識別子を追加し、セッション識別子にメモリを割り当て、セッション識別子に割り当てられたメモリに、システム環境変数およびサブシステムプロセスのインスタンスを生成することができる。
【００２０】
図２に例示されているように、セッションマネージャー２１６は、セッションコア２４４などのカーネルモード部を含むことが可能な、実行時サブシステム２４０などの環境サブシステムをインスタンス化できる。例えば、一実施形態における環境サブシステムは、サービスのいくつかのサブセットをアプリケーションプログラムに公開し、アクセスポイントをオペレーティングシステム２１４のカーネルに提供するように構成される。実施形態例では、実行時サブシステム２４０は、プロセスおよびスレッドの実行を制御することができ、セッションコア２４４は要求をカーネル２１４のエグゼキュティブに送ってスレッドにメモリを割り振り、要求が実行される時間をスケジュールすることができる。一実施形態では、セッションコア２４４は、ＧＤＩ（グラフィックディスプレイインターフェイス）２４６、セキュリティサブシステム２５０および入力サブシステム２５２を含むことが可能である。入力サブシステム２５２は、これらの実施形態では、クライアント２０１からのユーザー入力を、セッションに関連付けられたプロトコルスタックインスタンスを介して受信し、その入力を適切なセッション用のセッションコア２４４に送信するように構成できる。ユーザー入力は、一部の実施形態では、絶対マウス移動コマンドおよび／または相対的マウス移動コマンド、マウス座標、マウスクリック、キーボード信号、ジョイスティック移動信号などを表す信号を含むことが可能である。ユーザー入力、例えば、アイコンのマウスダブルクリックは、セッションコア２４４によって受信できて、入力サブシステム２５２は、アイコンが、ダブルクリックに関連付けられた座標にあるかを判定するように構成できる。次に、入力サブシステム２５２は、アイコンに関連付けられたアプリケーション用のプロセスを実行できる実行時サブシステム２４０に通知を送るように構成できる。
【００２１】
クライアント２０１から入力を受信することに加えて、描画コマンドはアプリケーションおよび／またはデスクトップから受信でき、ＧＤＩ２４６によって処理できる。ＧＤＩ２４６は、一般的に、グラフィカルオブジェクト描画コマンドを生成できるプロセスを含むことが可能である。ＧＤＩ２４６は、この実施形態例では、その出力をリモートディスプレイサブシステム２５４に渡すように構成することができ、コマンドは、リモートディスプレイサブシステム２５４で、セッションにアタッチされているディスプレイドライバー用にフォーマットされる。いくつかの実施形態例では、１つまたは複数の物理的ディスプレイがサーバー２０４に、例えば、リモートデスクトップ状況でアタッチできる。これらの実施形態例では、リモートディスプレイサブシステム２５４は、リモートコンピューターシステムのディスプレイドライバー（複数可）によってレンダリングされる描画コマンドをミラーして、ミラーされた情報を、セッションに関連付けられたスタックインスタンスを介してクライアント２０１に送信するように構成できる。サーバー２０４が端末サーバーである別の実施形態例では、リモートディスプレイサブシステム２５４は、サーバー２０４に物理的にアタッチされたディスプレイに関連付けられなくてよい仮想ディスプレイドライバー（複数可）を含むように構成できる。例えば、サーバー２０４はヘッドレスで稼働しているはずである。リモートディスプレイサブシステム２５４は、この実施形態では、１つまたは複数の仮想ディスプレイに対する描画コマンドを受信し、それらのコマンドを、セッションに関連付けられたスタックインスタンスを介してクライアント２０１に送信するように構成できる。本開示の実施形態では、リモートディスプレイサブシステム２５４は、各ディスプレイドライバーに対してディスプレイ解像度を決定して、例えば、仮想ディスプレイに関連付けられた仮想ディスプレイドライバー（複数可）のディスプレイ解像度、または物理的ディプレイに関連付けられたディスプレイドライバーのディスプレイ解像度を決定して、パケットを、関連付けられたプロトコルスタックインスタンスを介してクライアント２０１に経路指定するように構成できる。
【００２２】
一部の実施形態例では、セッションマネージャー２１６は、セッションのログオンおよびログオフを処理するように構成できる、セッションのセッション識別子に関連付けられたログオンプロセスのインスタンスを追加的にインスタンス化できる。これらの実施形態例では、クライアント２０１のユーザーがアカウント識別子、例えば、ユーザー名／パスワードの組み合わせ、スマートカード識別子および／または生体情報をログオン画面に入力できる、ログオンプロセスに関連付けられたグラフィカルユーザーインターフェイスを表す描画コマンドをクライアント２０１に送信することができる。この情報はサーバー２０４に送信して、エンジン２１２およびセッションコア２４４のセキュリティサブシステム２５０に経路指定することができる。例えば、いくつかの実施形態例では、エンジン２１２は、ユーザーアカウントがライセンスに関連付けられているかを判定するように構成できる。また、セキュリティサブシステム２５０は、セッション用のセキュリティトークンを生成するように構成できる。
【００２３】
ここで図３を参照すると、それは、本開示の態様を実施できるクライアント例２０１を示している。一般的に、図３のクライアント例２０１は、インターネットを介してサーバー２０４に動作可能なように結合できる。一実施形態では、クライアント２０１は、ユーザー入力をサーバー２０４に方向づけて（ｄｉｒｅｃｔ）、サーバー２０４によって生成されたユーザーインターフェイス情報を表示するように構成されたハードウェアによって達成されるコンピューターまたは端末でよい。別の実施形態では、クライアント２０１は、図１のパーソナルコンピューター２０の要素に類似した要素を含むコンピューターであってよい。この実施形態例では、クライアント２０１は、オペレーティングシステム３１２を達成するように構成された回路および端末の機能をエミュレートするように構成された回路を含むことが可能である。当業者は、オペレーティングシステム３１２を達成するように構成された回路は、端末をエミュレートするようにも構成できることが理解できよう。図３の概略を続けると、クライアント２０１は、一部の実施形態で、エグゼキュティブサービスのサブセットを公開できるクライアントサブシステム３０６、およびＡＰＩ呼び出しをカーネル３１４用のカーネルモードの呼び出しに変換するＤＬＬを含むことが可能である。一実施形態では、クライアントサブシステム３０６は、クライアント２０１に結合できるディスプレイ用のディスプレイドライバーを含むことが可能である。クライアントサブシステム３０６は、サーバー２０４から描画コマンドを受信して、ディスプレイドライバーに、イメージを仮想デスクトップ３０２に描画するように指示するように構成できる。仮想デスクトップ３０２がメモリ内に描画されると、ディスプレイドライバーは、仮想デスクトップ３０２のビューを物理的ディスプレイにレンダリングするように構成できる。例えば、クライアントサブシステム３０６は、ディスプレイドライバーに、仮想デスクトップ３０２のビュー３０４を取って、それをディスプレイにレンダリングするように指示することができる。図３の概略を続けると、一部の実施形態でクライアントサブシステム３０６の一部分、またはクライアントサブシステム３０６の対話する別個のサブシステムであってよいスクロールサブシステム３０８が示されている。スクロールサブシステム３０８は、一般的には、様々な変数を追跡することにより、仮想デスクトップ３０２のビュー３０４をいつスクロールすべきかを決定するように構成できる。
【００２４】
以下は、プロセスの実施を示す一連のフローチャートである。分かり易くするために、フローチャートは、初めのフローチャートが総合的な「全体像」の観点による実施を表すように編成されている。当業者は、本明細書で使用される提示スタイル（例えば、総合的なビューを表すフローチャート（複数可）の提示から始まって、その後で、後続のフローチャートで追加および／またはさらに詳細を提供する）では、一般的に、様々な動作手順を素早く、容易に理解できることが理解できよう。
【００２５】
ここで図４を参照すると、本開示の態様を実行するための、動作４００から動作４１２を含むフローチャートの例が示されている。動作例４００は動作手順を開始し、動作４０２は、リモートコンピューターから受信された形状情報から、リモートコンピューターのディスプレイドライバーのディスプレイ解像度を有する仮想デスクトップを生成するステップを示している。例えば、図３と並行して図２を参照すると、クライアント２０１は、サーバー２０４から信号、例えば、形状情報を表す１つまたは複数のパケットの情報を受信するように構成でき、図３のクライアントサブシステム３０６は、その情報を処理して仮想デスクトップ３０２をメモリ内に生成するように構成できる。一実施形態例では、形状情報は、サーバー２０４のディスプレイドライバーのディスプレイ解像度を定義することができ、クライアントサブシステム３０６は、仮想デスクトップ３０２、例えば、サーバー２０４と同じディスプレイ解像度を有するビットマップを生成することができる。
【００２６】
本開示の一実施形態では、サーバー２０４のリモートディスプレイサブシステム２５４は、例えば、サーバー２０４のディスプレイドライバー（複数可）に関連付けられたディスプレイピクセル量と等しいピクセル量を含む境界ボックスを生成することにより形状情報を生成するように構成できる。具体的な例では、サーバー２０４によって４つのディスプレイドライバーをインスタンス化することができ、各ドライバーが解像度１２８０×１０２４ピクセルを有することができる。この例では、リモートディスプレイサブシステム２５４は、５１２０×１０２４ピクセルの形状を有する境界ボックスを生成することができる。リモートディスプレイサブシステム２５４は、アイコンなどの位置を各ディスプレイドライバーに固有の座標から境界ボックスの座標に変換し、その形状をトランスポートロジック２１０を介してクライアント２０１に送るように追加的に構成できる。この例では、クライアント２０１は、形状から境界ボックスを生成するように構成できる。具体的な例を続けると、クライアントサブシステム３０６は、信号を受信して、ディスプレイドライバーにサイズ５１２０×１０２４ピクセルの仮想デスクトップ３０２をメモリ内に生成するように指示するように構成できる。この例では、クライアントサブシステム３０６は、次に、ディスプレイドライバーを、ビットマップ内にグラフィックスを境界ボックス内の位置に対して相対的に描画するように構成できる。別の具体的な例では、リモートディスプレイサブシステム２５４は、サーバー２０４にアタッチされたディスプレイドライバーが２０４８×１５３６ピクセルというディスプレイ解像度を出力するように構成されることを決定するように構成できる。この例では、リモートディスプレイサブシステム２５４は、ディスプレイ解像度を表す形状情報をトランスポートロジック２１０を介してクライアント２０１に送信するように構成できる。この具体的な例では、クライアントサブシステム３０６は、信号を受信して、サイズ２０４８×１５３６ピクセルの仮想デスクトップ３０２をメモリ内に生成するように構成でき、クライアントサブシステム３０６はディスプレイドライバーを、ビットマップ内にグラフィックスを境界ボックス内の位置に対して相対的に描画するように構成できる。
【００２７】
図４の説明を続けると、動作４０４は、リモートコンピューターから受信されたグラフィックスを仮想デスクトップに描画するステップを示している。例えば、前の例を続けると、クライアントサブシステム３０６は、リモートディスプレイサブシステム２５４から信号、例えば、描画コマンドを表す１つまたは複数のパケットを受信するように構成できる。コマンドはクライアントサブシステム３０６によって処理することができ、クライアント２０１のディスプレイドライバーは、仮想デスクトップ３０２にイメージを描画するように構成できる。具体的な例では、サーバー２０４に関して複数のアイコンと各アイコンの位置情報とでデスクトップ環境を定義する信号がサーバー２０４から受信できる。クライアントサブシステム３０６はその情報を処理して、ディスプレイドライバーに、境界ボックスに対して相対的にデスクトップおよびアイコンを描画するように指示する。
【００２８】
図４の説明を続けると、動作４０６は、仮想デスクトップのビューをレンダリングするステップであって、ビューはエッジによって画定され、仮想デスクトップの一部分を示すステップを示している。動作手順例の説明を続けると、グラフィックスがサーバー２０４から受信されて、仮想デスクトップ３０２に描画された後、クライアントサブシステム３０６のディスプレイドライバーは、仮想デスクトップ３０２のビュー３０４をレンダリングするように構成できる。例えば、本開示の一実施形態では、メモリには仮想デスクトップ３０２の全体が描画できるが、ディスプレイドライバーは、グラフィックスのサブセットが仮想デスクトップ３０２の現行ビュー内にあるかどうかに基づいて、クライアント２０１にアタッチされたディスプレイにそのサブセットのみをレンダリングすることができる。本開示の一実施形態では、クライアント２０１のディスプレイドライバーは、仮想デスクトップ３０２のディスプレイ解像度より小さい固有のディスプレイ解像度を有することができる。例えば、仮想デスクトップ３０２のサイズが２０４８×１５３６ピクセルの時、クライアント２０１のディスプレイドライバーは、８００×６００ピクセルのディスプレイ解像度を提供できるだけである。この例では、クライアントサブシステム３０６は、ビュー３０４のディスプレイ解像度を定義する情報および仮想デスクトップ３０２に対して相対的なビューの座標を受信して、ディスプレイドライバーを、示されたイメージをビュー３０４の寸法内にレンダリングするように構成するように構成できる。
【００２９】
図４の説明を続けると、動作４０８は、相対的カーソル移動情報を受信するステップを示している。例えば、前の例に加えて、スクロールサブシステム３０８は、クライアント２０１のオペレーティングシステム３１２から相対的マウス移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム３１２は、ビュー３０４内のカーソル３１０の移動、例えば、ビットマップを追跡するように構成できる。カーソル３１０は、一部の実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム３１２がカーソル３１０の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム３０８は、例えば、物理的入力デバイス、例えば、タッチパッドまたはマウスが移動した方向を識別する入力メッセージを所定の事例の発生時に受信するように構成できる。例えば、一実施形態では、クライアント２０１のオペレーティングシステム３１２は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には（＋１、＋１）などの情報を含むことができる。代替的実施形態では、スクロールサブシステム３０８は、仮想デスクトップ３０２に対して相対的なカーソル３１０の座標を識別する絶対カーソル移動情報を追跡するように構成できる。この例では、スクロールサブシステム３０８は、位置情報から計算するように構成できる。
【００３０】
図４の説明を続けると、動作４１０は、相対的カーソル移動情報およびビューのエッジから、カーソルがビューのエッジに到達したことを判定するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、仮想デスクトップ３０２に対して相対的なビュー３０４のピクセル範囲を識別する情報およびカーソル３１０の現在の位置を受信するように構成できる。スクロールサブシステム３０８は、例えば、絶対マウス移動情報および／または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム３０８は、マウス移動メッセージが受信されるたびに、仮想デスクトップ３０２に対して相対的なカーソル３１０の位置を判定し、その位置を、仮想デスクトップ３０２に対して相対的にビュー３０４を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ３０２に対して相対的なカーソル３１０のｘ座標およびｙ座標を、仮想デスクトップ３０２に対して相対的にビュー３０４のエッジを画定するｘ座標およびｙ座標と比較することにより、カーソル３１０がビュー３０４のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム３０８は、仮想デスクトップ内のカーソル３１０の座標、例えば、ピクセル４００×３００、および仮想デスクトップのビューを画定するピクセル、例えば、ｘ軸上のピクセル０から８００およびｙ軸上のピクセル０から６００を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル３１０は、例えば、ビュー３０４を横切って左から右へ移動することができる。スクロールサブシステム３０８は、カーソル３１０のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、ｘ軸のピクセル８００に到達したかを検査することができる。スクロールサブシステム３０８が、ｘ軸のエッジに到達したと判定した場合、例えば、カーソル３１０がピクセルポイント８００×３００に位置していると判定した場合、スクロールサブシステム３０８は、メッセージをクライアントサブシステム３０６に送るように構成できる。
【００３１】
図４の説明を続けると、動作４１２は、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするステップを示している。例えば、前の例に加えて、スクロールサブシステム３０８が、ビュー３０４のエッジに到達したと判定した場合、スクロールサブシステム３０８は、ビュー３０４を相対的マウス移動の方向にパンするための信号をクライアントサブシステム３０６に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム３０８は、カーソル３１０がビュー３０４の右エッジに位置していた時にマウスがｘ方向に＋１だけ移動したことを示す信号を受信することがある。スクロールサブシステム３０８は、ビューをｘ軸上で＋１ピクセルだけパンするためのメッセージをクライアントサブシステム３０６に送るように構成できる。この例では、カーソル３１０は、ｘ方向にもう１回＋ｘピクセルだけ移動することができ、スクロールサブシステム３０８は、カーソル３１０が新しいエッジ上にあると判定することができる。したがって、マウスが再び右に移動した場合、スクロールサブシステム３０８は、ビュー３０４を再びパンするための信号をクライアントサブシステム３０６に送るように構成できる。
【００３２】
ここで図５〜図７を参照すると、それらは、図４の動作手順４００の代替的実施形態を示している。図５は、図４の動作手順４００に動作手順５１４および動作手順５１６ならびに詳細５１８を追加した、図４の代替的実施形態を示している。動作５１４を参照すると、それは、線形加速因数を相対的カーソル移動情報に適用するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、相対的カーソル移動情報を受信し、その相対的カーソル移動情報にスケール値を掛け、ビュー３０４をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム３０６に送信するように構成できる。例えば、一実施形態例では、ビュー３０４を相対的マウス移動に等しい量より多い数のピクセルだけパンすることが望ましいことがある。例えば、クライアント２０１がタッチパッドを含む実施形態例では、ユーザーは、仮想デスクトップ３０２の一方のサイドから他方のサイドへビュー３０４を移動させるために、タッチパッドを横切って指を不合理な回数スクロールしなければならないことがある。そのため、一実施形態では、スクロールサブシステム３０８は、相対的移動情報に固定値を掛けて、クライアントサブシステム３０６に、ビュー３０４をスケール化量だけ移動させるように指示するように構成できる。具体的な例では、スクロールサブシステム３０８は、カーソル位置が、ビュー３０４の右エッジを画定するピクセル上にあることを判定するように構成できる。この例では、ユーザーがマウスをｘ方向に＋１だけ移動させると、スクロールサブシステム３０８は、ピクセル移動に５０などの固定数を掛けて、ビュー３０４をｘ方向に＋５０ピクセルだけ移動（パン）するためのメッセージをクライアントサブシステム３０６に送ることができる。
【００３３】
図５の説明を続けると、それは、カーソルの速さを決定するステップと、動的加速因数を生成するステップであって、動的加速因数はカーソルの速さの関数であるステップと、動的加速因数を相対的カーソル移動情報に適用するステップとを示した動作５１６を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、相対的カーソル移動情報を受信して、その相対的カーソル移動情報に動的スケール値を掛けて、ビュー３０４をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム３０６に送信するように構成できる。例えば、一実施形態では、カーソル３１０がビュー３０４を横切って素早く移動する場合、ビュー３０４を多数のピクセルだけパンすることが望ましいことがある。例えば、ユーザーがカーソル３１０をビュー３０４を横切って移動させる場合、ユーザーは仮想デスクトップ３０２の遠端の何かを操作することに関心があることが推察できる。この例では、スクロールサブシステム３０８は、ユーザーの意図がビュー３０４を多数のピクセルだけパンすることであることを推察するように構成できる。この状況では、スクロールサブシステム３０８は、カーソル３１０がビュー３０４を横切って移動する間、カーソル３１０の速さに依存するスケール値を生成するように構成できる。例えば、スクロールサブシステム３０８は、最後の６４個のサンプル全体にわたってカーソル３１０の座標を追跡するように構成できる。サンプリング率は固定であってよく、スクロールサブシステム３０８は、カーソル３１０の平均の速さを判定するように構成できる。この例では、スクロールサブシステム３０８は、カーソル３１０の平均の速さに基づいてスケール値を大きくし、クライアントサブシステム３０６に、ビュー３０４をスケール化量だけパンするように指示するように構成できる。具体的な例では、スケール値は速さと共に急激に増加することができる。そのため、カーソル３１０がビュー３０４内を移動する速さが速ければ速いほど、ビュー３０４は、クライアントサブシステム３０６によって、より多くスクロールされることになる。具体的な実施形態では、カーソル３１０は、ビュー３０４を横切って左から右へ移動することができる。この具体的な例では、スクロールサブシステム３０８は、カーソル３１０の座標はｘ方向に＋１０でサンプルを変更していること示す多数のメッセージを受信することができる。この具体的な例では、スクロールサブシステム３０８は、ｅ＾１０を取ることにより動的加速因数を決定し、クライアントサブシステム３０６に、ビュー３０４をｘ方向に２２，０２６個のピクセルだけ移動させるように指示するように構成できる。同じ実施形態または他の実施形態では、スクロールサブシステム３０８は、４０３などの最大の動的な値を設定するように構成できて、そのため、この状況では、クライアントサブシステム３０６は、何千個のピクセルをスクロールすることによってビュー３０４を大量に変更することはできない。
【００３４】
代替的実施形態では、スクロールサブシステム３０８は、カーソル３１０の速さを決定し、スクロールサブシステム３０８がビュー３０４のエッジと見なすピクセル範囲を変更するように構成できる。この例では、スクロールサブシステム３０８は、カーソル３１０の速さを検出し、カーソルの速さが増すにつれて縮小するビュー３０４の中のエッジとして作用する境界ボックスを生成することができる。例えば、８００×６００ピクセルを含むビュー３０４では、ビュー３０４のエッジは、ｘ方向ではピクセル０および８００になり得て、ｙ方向ではピクセル０から６００になり得る。カーソル３１０の速さが＋１と検出されると、スクロールサブシステム３０８はエッジを同じにしておくことができる。しかし、速さがｘ方向に＋１０と検出されると、スクロールサブシステム３０８は、エッジをｘ方向ではピクセル０および７２０、ｙ方向ではピクセル０から５４０であるように構成できる。ビュー３０４のサイズはこの例では８００×６００のままであるが、スクロール動作は、ビュー３０４の物理的エッジに到達する前に発生するように構成できる。この例では、カーソル３１０が素早く移動する場合、クライアントサブシステム３０６はディスプレイドライバーを、カーソル３１０がビュー３０４の物理的エッジに到達する前にビューをパンするように構成できる。この代替的実施態様は、クライアントサブシステム３０６をビュー３０４をより速くパンするように構成するために他の加速手法と合わせて使用することができる。
【００３５】
図５の説明を続けると、それは、動作４０２の詳細を追加的に示している。詳細５１８は、リモートコンピューターから受信された形状情報から仮想デスクトップを生成するステップであって、形状情報は境界ボックス、およびリモートコンピューターのディスプレイレイアウトを画定する情報を含み、さらに境界ボックスのディスプレイ解像度はリモートコンピューターの第１のディスプレイドライバーおよび第２のディスプレイドライバーからのディスプレイ解像度情報から計算されるステップを示している。例えば、本開示の一実施形態では、サーバー２０４のリモートディスプレイサブシステム２５４は、第１のディスプレイドライバーおよび第２のディスプレイドライバーに関連付けられたピクセル範囲の合計に等しいピクセル範囲を画定する境界ボックスを生成するように構成できる。これらの実施形態例では、リモートディスプレイサブシステム２５４は、例えば、第２のディスプレイドライバーの座標を境界ボックスに再マップするように構成できる。例えば、８００×６００というピクセル範囲を有する第２のディスプレイ上のピクセル（０、０）は、第１のディスプレイドライバーが１２８０×１０２４というディスプレイ解像度を有している場合、ピクセル（１２８０、０）に再マップできる。リモートディスプレイサブシステム２５４は、この例では、各ディスプレイドライバーのピクセルの合計を含む境界ボックスをサーバー２０４上のディスプレイドライバーの論理的レイアウトに従って生成するように構成できる。例えば、第１のディスプレイドライバーが第２のディスプレイドライバーの左方にイメージを論理的にレンダリングするように構成されている場合、リモートディスプレイサブシステム２５４によって生成される境界ボックスは、２０８０×１０２４ピクセルの解像度を有することができる。別の例では、第１のディスプレイドライバーが第２のディスプレイドライバーの上方にイメージを論理的にレンダリングするように構成されている場合、リモートディスプレイサブシステム２５４によって生成される境界ボックスは、１２８０×１６２４ピクセルといった寸法を有することができる。これらの状況では、リモートディスプレイサブシステム２５４は、寸法を表す信号をトランスポートロジック２１０を介してクライアント２０１に送信するように構成できる。この例では、クライアントサブシステム３０６は、境界ボックスのピクセル範囲を含む仮想デスクトップ３０２を生成するように構成できる。境界ボックスのピクセル範囲を送信することに加えて、リモートディスプレイサブシステム２５４は、サーバー２０４のディスプレイドライバーのレイアウトを送信するように追加的に構成できる。例えば、１２８０×１０２４というディスプレイ解像度を有するディスプレイドライバーが８００×６００というピクセル範囲を有する第２のディスプレイドライバーの左方に論理的に配置されている場合、仮想デスクトップは、同じレイアウトを含むように構成できる。例えば、第２のディスプレイドライバーのピクセルは、境界ボックスのピクセル（１２８０、０）から始まるように再マップできる。他方、１２８０×１０２４というディスプレイ解像度を有するディスプレイドラ���バーが８００×６００というピクセル範囲を有する第２のディスプレイドライバーの右方に論理的に配置されている場合、第１のディスプレイドライバーのピクセルは、境界ボックスのピクセル（８００、０）から始まるように再マップできる。
【００３６】
図６を参照すると、それは、追加動作６２０を含む図５の動作手順４００の代替的実施形態を示している。動作６２０については、それは、リモートデバイスの第１のディスプレイドライバーおよび第２のディスプレイドライバー用のディスプレイ解像度情報を受信するステップと、そのディスプレイ解像度情報から第１のディスプレイドライバーおよび第２のディスプレイドライバー用のエッジを決定するステップとを示している。例えば、本開示の一実施形態では、サーバー２０４のリモートディスプレイサブシステム２５４は、第１のディスプレイドライバーおよび第２のディスプレイドライバーに関連付けられたピクセル範囲の合計に等しいピクセル範囲を含む境界ボックスを生成するように構成できる。境界ボックスをクライアント２０１に送信することに加えて、リモートディスプレイサブシステム２５４は、各ディスプレイドライバー用の形状を表す信号をトランスポートロジック２１０を介してクライアント２０１に送信するように構成できる。この実施形態例では、クライアントサブシステム３０６は、各ディスプレイドライバー用の形状を表す１つまたは複数のパケットを受信し、ディスプレイドライバーのエッジに関連付けられた、仮想デスクトップ３０２内のピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム３０６は、この情報をスクロールサブシステム３０８に伝達するように構成できる。
【００３７】
図７を参照すると、それは、追加の動作７２２および動作７２４を含む図６の動作手順４００の代替的実施形態を示している。動作７２２については、それは、ビューを画定するエッジおよび第１のディスプレイドライバーおよび第２のディスプレイドライバーを画定するエッジから、ビューのエッジが第１のディスプレイドライバーのエッジに到達したことを判定する副動作と、カーソルの速さが所定の値より大きいことを判定する副動作と、仮想デスクトップのビューを第２のディスプレイドライバーに関連付けられた遠方エッジまでスクロールする副動作とを示している。例えば、本開示の一実施形態における前の例に加えて、スクロールサブシステム３０８は、ビュー３０４を、第２のディスプレイのピクセルに関連付けられた遠方エッジまでパンするように構成できる。実施態様の一例では、スクロールサブシステム３０８は、ビュー３０４のエッジが、第１のディスプレイに関連付けられたエッジに到達し、カーソル３１０が所定の速さで移動している時にこのジャンプ動作を実行するように構成できる。例えば、スクロールサブシステム３０８は、この実施形態例では、仮想デスクトップ３０２に対して相対的なビュー３０４のエッジ、サーバー２０４のディスプレイドライバーのエッジを画定する、仮想デスクトップ３０２に対して相対的なピクセル値、およびカーソル３１０の速さを識別する情報を受信するように構成できる。この実施形態例では、スクロールサブシステム３０８は、ビュー３０４のエッジがリモートディスプレイドライバーのエッジに重なった時を検出するように構成できる。スクロールサブシステム３０８が、エッジに到達したこと、例えば、ビュー３０４のエッジがピクセル１２８０にあり、第１の例のディスプレイドライバーの解像度はピクセル１２８０で終わることを判定する場合、スクロールサブシステム３０８は、カーソル３１０の速さを判定するように構成できる。カーソル３１０の速さが所定のしきい値、例えば、サンプルごとに＋１５ピクセルより大きい場合、スクロールサブシステム３０８は、ユーザーは画面全体をジャンプしたがっていると判定し、ビュー３０４をサーバー２０４のリモートディスプレイドライバーに関連付けられた遠方エッジ、例えば、仮想デスクトップ３０２のピクセル１６２４まで移動させるための信号をクライアントサブシステム３０６に送るように構成できる。一実施形態では、この動作は、ユーザーが、様々なディスプレイに関連付けられたピクセル範囲でアプリケーションのウィンドウサイズを最大化した場合に望ましい可能性がある。ユーザーがディスプレイ間で後方または前方にジャンプしたい場合、ユーザーは特定のスピードでマウスを移動させることができ、スクロールサブシステム３０８は、仮想デスクトップのビュー３０４をディスプレイ全体にわたって「バンプ」することができる。
【００３８】
代替的実施形態では、仮想デスクトップ３０２の遠方エッジにジャンプするのではなく、ビュー３０４は、ビュー３０４のディスプレイ解像度に等しいピクセル範囲をジャンプするように構成できる。例えば、スクロールサブシステム３０８は、この実施形態例では、仮想デスクトップ３０２に対して相対的なビュー３０４のエッジおよびカーソル３１０の速さを識別する情報を受信するように構成できる。この実施形態例では、スクロールサブシステム３０８は、カーソル３１０がビュー３０４の特定のエッジに到達した時を検出するように構成できる。スクロールサブシステム３０８が、特定のエッジに到達し、カーソル３１０の速さが所定のしきい値、例えば、サンプルごとに＋１５ピクセルより大きいと判定した場合、スクロールサブシステム３０８は、ユーザーはビュー３０４をジャンプしたがっていると判定し、ビューの右エッジを右へ８００ピクセルだけ移動させるための信号をクライアントサブシステム３０６に送るように構成できる。
【００３９】
図７の説明を続けると、動作７２４は、カーソルの座標情報ならびに第１のディスプレイドライバーおよび第２のディスプレイドライバーを画定するエッジの座標情報から、カーソルが第１のディスプレイドライバーのエッジに到達したことを判定するステップと、触覚応答を生成するステップとを示している。例えば、本開示の一実施形態における前の例に加えて、スクロールサブシステム３０８は、触覚応答を生成するように、例えば、クライアント２０１または周辺機器のコンポーネントによって処理された時、振動を生成する信号を生成するように構成できる。例えば、マウスまたはタッチパッドは、スクロールサブシステム３０８から受信された電気信号に応答してマス（ｍａｓｓ）を回転するモーターを含むように構成できる。この例では、マスを回転すると、マウスのケースまたはラップトップがランブル音を出す。この例では、スクロールサブシステム３０８は、ビュー３０４の位置を識別する情報、例えば、カーソル３１０の位置を画定する、仮想デスクトップ３０２に対して相対的なピクセル値、およびサーバー２０４のディスプレイドライバーのエッジを画定する、仮想デスクトップ３０２に対して相対的なピクセル値を受信するように構成できる。この実施形態例では、スクロールサブシステム３０８は、カーソル３１０の位置がリモートディスプレイドライバーのエッジに重なった時を検出するように構成できる。スクロールサブシステム３０８が、エッジに到達したこと、例えば、２つのディスプレイドライバーが１２８０×１０２４および８００×６００である実施形態でカーソル３１０の位置がピクセル１２８０上であることを判定した場合、スクロールサブシステム３０８は、触覚サブシステムにユーザー入力デバイスを振動させるように指示する信号をマウスなどのユーザー入力デバイスに送るように構成できる。
【００４０】
ここで図８を参照すると、動作８００から動作８０８を含む、本開示の態様を実行するためのフローチャートの例が示されている。本開示の一実施形態では、図８の動作手順の例は、コンピューター読み取り可能なストレージ媒体に保管されたコンピューター読み取り可能な命令の形で実施できる。コンピューター読み取り可能な命令はクライアント２０１のプロセッサによって処理することができ、そのプロセッサが動作手順を実行する。ここで図８を参照すると、動作例８００は動作手順を開始し、動作８０２は、リモートコンピューターから受信されたグラフィックスを示す仮想デスクトップのビューをレンダリングするステップであって、ビューはピクセルの範囲によって画定され、仮想デスクトップはリモートコンピューターのディスプレイ解像度に対応するピクセルの範囲によって画定されるステップを示している。例えば、クライアントサブシステム３０６は、ディスプレイドライバーに仮想デスクトップ３０２をクライアント２０１のメモリ内に生成し、サーバー２０４から受信されたグラフィックスを仮想デスクトップ３０２に描画するように指示するように構成できる。この実施形態例では、クライアント２０１のディスプレイドライバーは、ピクセル範囲、例えば、８００×６００によって画定される仮想デスクトップ３０２のビュー３０４をレンダリングするように構成できる。例えば、本開示の一実施形態では、メモリにはディスプレイドライバーによって仮想デスクトップ３０２の全体が描画されるが、ディスプレイドライバーは、グラフィックスのサブセットが仮想デスクトップ３０２の現在のビュー内にあるかどうかに基づいて、クライアント２０１にアタッチされたディスプレイにそのサブセットのみをレンダリングすることができる。一実施形態では、クライアント２０１のディスプレイドライバーは、仮想デスクトップ３０２のディスプレイ解像度より小さい固有のディスプレイ解像度を有することができる。例えば、仮想デスクトップ３０２のサイズが２０４８×１５３６ピクセルの時、クライアント２０１のディスプレイドライバーは、８００×６００ピクセルのディスプレイ解像度を提供できるだけである。この例では、クライアントサブシステム３０６は、ビュー３０４のディスプレイ解像度を定義する情報および仮想デスクトップ３０２に対して相対的なビューの座標を受信して、ディスプレイドライバーを、示されたイメージをビュー３０４の寸法内にレンダリングするように構成するように構成できる。
【００４１】
図８の説明を続けると、それは、相対的カーソル移動情報を受信するステップを例示した動作８０４を追加的に示している。例えば、前の例に加えて、スクロールサブシステム３０８は、クライアント２０１のオペレーティングシステム３１２から相対的マウス移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム３１２は、ビュー３０４内のカーソル３１０の移動、例えば、ビットマップを追跡するように構成できる。カーソル３１０は、一部の実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム３１２がカーソル３１０の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム３０８は、例えば、物理的入力デバイス、例えば、タッチパッドまたはマウスが移動した方向を識別する入力メッセージを所定の事例の発生時に受信するように構成できる。例えば、一実施形態では、クライアント２０１のオペレーティングシステム３１２は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には（＋１、＋１）などの情報を含むことができる。代替的実施形態では、スクロールサブシステム３０８は、カーソル３１０の座標を識別する絶対カーソル移動情報を追跡し、仮想デスクトップ３０２に対して相対的なカーソルの移動を計算するように構成できる。
【００４２】
図８の説明を続けると、それは、相対的カーソル移動情報、およびビューを画定するピクセルの範囲から、カーソルがビューのエッジに到達したことを判定するステップを例示した動作８０６を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、仮想デスクトップ３０２に対して相対的なビュー３０４のピクセル範囲を識別する情報およびカーソル３１０の現在の位置を受信するように構成できる。スクロールサブシステム３０８は、例えば、絶対マウス移動情報および／または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム３０８は、マウス移動メッセージが受信されるたびに、仮想デスクトップ３０２に対して相対的なカーソル３１０の位置を判定し、その位置を、仮想デスクトップ３０２に対して相対的にビュー３０４を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ３０２に対して相対的なカーソル３１０のｘ座標およびｙ座標を、仮想デスクトップ３０２に対して相対的にビュー３０４のエッジを画定するｘ座標およびｙ座標と比較することにより、カーソル３１０がビュー３０４のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム３０８は、仮想デスクトップ内のカーソル３１０の座標、例えば、ピクセル４００×３００、および仮想デスクトップのビューを画定するピクセル、例えば、ｘ軸上のピクセル０から８００およびｙ軸上のピクセル０から６００を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル３１０は、例えば、ビュー３０４を横切って左から右へ移動することができる。スクロールサブシステム３０８は、カーソル３１０のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、ｘ軸のピクセル８００に到達したかを検査することができる。スクロールサブシステム３０８が、ｘ軸のエッジに到達したと判定した場合、例えば、カーソル３１０がピクセルポイント８００×３００に位置していると判定した場合、スクロールサブシステム３０８は、メッセージをクライアントサブシステム３０６に送るように構成できる。
【００４３】
図８の説明を続けると、それは、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするステップを例示した動作８０８を追加的に示している。例えば、前の例に加えて、スクロールサブシステム３０８が、ビュー３０４のエッジに到達したと判定した場合、スクロールサブシステム３０８は、ビュー３０４を相対的マウス移動の方向にパンするための信号をクライアントサブシステム３０６に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム３０８は、カーソル３１０がビュー３０４の右エッジに位置していた時にマウスがｘ方向に＋１だけ移動したことを示す信号を受信することがある。スクロールサブシステム３０８は、ビューをｘ軸上で＋１ピクセルだけパンするためのメッセージをクライアントサブシステム３０６に送るように構成できる。この例では、カーソル３１０は、ｘ方向にもう１回＋１ピクセルだけ移動することができ、スクロールサブシステム３０８は、カーソル３１０が新しいエッジ上にあると判定することができる。したがって、マウスが再び右に移動した場合、スクロールサブシステム３０８は、ビュー３０４を再びパンするための信号をクライアントサブシステム３０６に送るように構成できる。
【００４４】
ここで図９から図１１を参照すると、それらは、図８の動作手順の代替的実施形態を示している。図９を参照すると、それは、追加の動作手順９１０および動作手順９１２を含む、図８の動作手順８００を示している。動作９１０は、仮想デスクトップを複数のゾーンに分割するステップと、各ゾーンをキーボードのキーに割り当てるステップと、特定のゾーンに割り当てられたキーの選択を受信するステップと、キーの選択に応答してビューを特定のゾーンにセンタリングするステップとを示している。例えば、本開示の一実施形態では、サーバー２０４のリモートディスプレイサブシステム２５４は、仮想デスクトップの形状を画定する信号を生成するように構成でき、サーバー２０４は、形状情報を表す信号をクライアント２０１に送信するように構成できる。この実施形態例では、クライアントサブシステム３０６は、仮想デスクトップ３０２をメモリ内に生成し、形状を表す信号をスクロールサブシステム３０８に送信するように構成できる。この実施形態例では、スクロールサブシステム３０８は、仮想デスクトップ３０２を、各ゾーンにピクセルの範囲を割り当てることができる複数のゾーンに分割するように構成できる。仮想デスクトップが複数のゾーンに分割されると、ゾーンの識別子をテーブルに保管できて、キーボード上のキーに関連付けることができる。例えば、仮想デスクトップ３０２が４つのゾーンに分割された場合、キー「９」、「７」、「１」および「３」を使用して仮想デスクトップ３０２の４つの四分区間に対応付けることができる。この例では、例えば、コントロールキーが押し下げられたまま、スクロールサブシステム３０８が「９」、「７」、「１」および「３」を含む通知を受信すると、スクロールサブシステム３０８は、選択されたゾーンの中心を画定するピクセル上にビュー３０４をセンタリングするようにクライアントサブシステム３０６に指示する信号をクライアントサブシステム３０６に送るように構成できる。
【００４５】
図９の説明を続けると、動作９１２は、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのスケール化イメージおよびビューのスケール化イメージを示すステップを示している。例えば、本開示の一実施形態では、クライアントサブシステム３０６は、仮想デスクトップ３０２の、ビュー３０４がレンダリングしている一部分を図示するために仮想デスクトップ３０２およびビュー３０４のスケール化イメージを示すミニマップ３１６を生成するように構成できる。例えば、ミニマップ３１６を含む実施形態では、クライアントサブシステム３０６は、仮想デスクトップ３０２を画定するピクセルの範囲、および仮想デスクトップ３０２に対して相対的にビュー３０４を画定するピクセルの範囲を受信するように構成できる。この実施形態例では、クライアントサブシステム３０６は、ビュー３０４および仮想デスクトップ３０２両方のピクセル範囲を分割し、仮想デスクトップ３０２内のビュー３０４の中心のピクセル座標に対応する、スケール化ビューの中心を決定することによりミニマップ３１６を生成するように構成できる。この実施形態例では、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、ビュー３０４の位置を表示するミニマップ３１６をビュー３０４の一部分全体にレンダリングするように構成できる。この実施形態例では、ビュー３０４がスクロールされるにつれて、ビュー３０４を画定するピクセルの範囲が更新できて、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、ビュー３０４が変化したことを反映する、更新されたミニマップ３１６をレンダリングするように構成することができる。
【００４６】
本開示の別の実施形態では、ミニマップ３１６は、スケール化ビューおよびスケール化仮想デスクトップ３０２に加えて、サーバー２０４から受信されたスケール化イメージをレンダリングするように構成できる。例えば、各ウィンドウ、および／またはサーバー２０４から受信されたアイコン描画コマンドは、仮想ディスプレイ３０２内のピクセル位置に関連付けることができる。この実施形態例では、クライアントサブシステム３０６は、ウィンドウおよび／またはアイコンをスケールし、スケール化仮想デスクトップ３０２内のスケール化ウィンドウおよび／またはスケール化アイコンのピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、スケール化アイコンおよび／またはスケール化ウィンドウをビュー３０４の一部分全体にレンダリングするように構成できる。
【００４７】
ここで図１０を参照すると、それは、動作手順の詳細１０１４および追加の動作手順１０１６を含む、図９の動作手順８００の代替的実施形態を示している。詳細１０１４を参照すると、それは、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのワイヤフレームイメージおよびビューのワイヤフレームアウトラインを含むステップを示している。例えば、本開示の一実施形態では、ミニマップ３１６は、ビューおよび仮想デスクトップの塗りつぶしイメージまたは半透明イメージをビュー３０４全体にレンダリングすることができるが、一実施形態では、計算能力を維持するために、クライアントサブシステム３０６は、ビュー３０４および仮想デスクトップ３０２のワイヤフレームを生成するように構成できる。例えば、ワイヤフレームは、一実施形態では、ピクセルの範囲によって画定されるビューおよび仮想デスクトップのエッジを識別することにより作成されるビジュアルプリゼンテーションを含むことができる。
【００４８】
図１０の説明を続けると、動作１０１６は、ユーザー入力をリモートコンピューターに送信するステップであって、リモートコンピューターはユーザー入力に応答してプログラムを実行するように構成されているステップと、そのプログラム用のユーザーインターフェイスを表すグラフィックスを受信するステップと、そのプログラム用のユーザーインターフェイスのスケール化イメージでミニマップを更新するステップとを示している。例えば、本開示の一実施形態では、クライアント２０１のネットワークアダプターは、仮想デスクトップ３０２およびマウスのダブルクリックなどのユーザー入力に関してカーソル３１０の座標を表す１つまたは複数のパケットを送信するように構成できる。この例では、図２を参照すると、ユーザー入力は、セッションに関連付けられ、入力サブシステム２５２に転送されるスタックインスタンスによって受信することができる。入力サブシステム２５２は、カーソル３１０のホットスポットの座標がプログラムのアイコンが配置されている場所にあることを判定することができる。セッションコア２４４は、識別されたプログラムへのハンドルを含む信号を実行時サブシステム２４０に送ることができる。実行時サブシステム２４０は、プログラム用の１つまたは複数のスレッドをインスタンス化できるプロセスを実行することができる。スレッドは、サーバーオペレーティングシステム２１４のカーネル２１４によって、サーバー２０４のプロセッサによって処理されるようにスケジュールすることができ、プログラムを表すユーザーインターフェイスがＧＤＩ２４６によって生成できる。この例では、リモートディスプレイサブシステム２５４は、ユーザーインターフェイスを表す描画コマンドを受信し、それらのコマンドをそのセッション用のスタックインスタンスに経路指定するように構成できる。トランスポートロジック２１０は、次に、パケットをクライアント２０１に送信できる。ここで図３を参照すると、クライアントサブシステム３０６がパケットを受信すると、クライアントサブシステム３０６は、ユーザーインターフェイスの座標を識別し、ユーザーインターフェイスを仮想デスクトップ３０２に描画するように構成できる。この例では、クライアントサブシステム３０６は、仮想デスクトップ３０２を画定するピクセルの範囲と、仮想デスクトップ３０２に対して相対的にビューを画定するピクセルの範囲と、プログラム用のユーザーインターフェイスを画定するピクセルの範囲とを受信するように構成できる。この実施形態例では、クライアントサブシステム３０６は、仮想デスクトップおよびプログラム用のスケール化ユーザーインターフェイス用のピクセル範囲を分割することによりミニマップ３１６を生成し、プログラム用のスケール化ユーザーインターフェイス用の中心を決定するように構成できる。この実施形態例では、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、ビュー３０４の、プログラム用のスケール化ユーザーインターフェイスを含む一部分、または、例えば、プログラム用のスケール化ユーザーインターフェイスのワイヤフレーム全体にミニマップ３１６をレンダリングするように構成できる。別の実施形態では、クライアントサブシステム３０６は、仮想デスクトップ３０２のどこにスケール化ユーザーインターフェイスがレンダリングされたかをユーザーが素早く識別できるようにするために、スケール化ユーザーインターフェイスのカラーを、所定の時間、変更するように構成できる。
【００４９】
ここで図１１を参照すると、それは、仮想デスクトップ上のユーザーインターフェイスの位置を示す座標を受信するステップと、ユーザー入力を受信するステップと、ユーザー入力に応答してビューをユーザーインターフェイスにセンタリングするステップとを示す動作手順１１１８を含む、図１０の動作手順８００の代替的実施形態を示している。例えば、一実施形態では、新しいウィンドウまたはプログラム用のユーザーインターフェイスがクライアントサブシステム３０６によって描画される時、そのウィンドウまたはユーザーインターフェイスの座標を識別する通知をスクロールサブシステム３０８に送ることができる。この実施形態では、座標を表すハンドルがテーブルに保管できて、キーまたはマウスボタンなどのユーザー入力はそのハンドルに関連付けることができる。この実施形態例では、スクロールサブシステム３０８は、ユーザー入力に関連した通知を受信し、受信されたユーザー入力から、ハンドルに関連付けられたキーまたはマウスボタンが選択されたかを判定するように構成できる。それが選択された場合、スクロールサブシステム３０８は、クライアントサブシステム３０６に、新しいウィンドウまたはプログラム用のユーザーインターフェイスの座標上にビュー３０４をセンタリングするように指示する信号を送ることができる。この例では、クライアントサブシステム３０６はこのメッセージを受信し、ディスプレイドライバーに、ビュー３０４をセンタリングするように指示することができる。
【００５０】
ここで図１２を参照すると、それは、本開示の態様を実行するための、動作１２００、動作１２０２、動作１２０４および動作１２０６を含むフローチャートの例を示している。本開示の一実施形態では、コンピューターシステムは、回路、例えば、図１２の動作手順を達成するように構成されたハードウェアおよびソフトウェアの組み合わせを含むことができる。ここで図３と並行して図１２を参照すると、動作１２００は動作手順を開始し、動作１２０２は、仮想デスクトップのビューをレンダリングするステップであって、仮想デスクトップは、リモートコンピューターのディスプレイ解像度に対応する第１のピクセル範囲によって画定され、ビューは第２のピクセル範囲によって画定されるステップを示している。例えば、本開示の一実施形態では、クライアント２０１は、カーネル３１４を有するオペレーティングシステム３１２を含むように構成できる。カーネル３１４は、クライアント２０１のハードウェアを管理し、プロセッサ上で実行するスレッドをスケジュールするように構成できる。オペレーティングシステム３１２は、ユーザーモードおよびカーネルモード、例えば、アプリケーションが実行されて、かつ限られた数の権利を有する非特権プロセッサモード、およびすべてのメモリ命令およびＣＰＵ命令が発行できるプロセッサでのコード実行の特権モードを含むように構成できる。カーネル３１４は、この例では、サーバー２０４から描画コマンドを受信し、ディスプレイドライバーに、メモリに保管された仮想デスクトップ３０２にそれらを描画するように指示することにより、リモートデスクトップ環境を達成する１つまたは複数のプロセスを含むことができるクライアントサブシステム３０６とインターフェイス接続できる。上述と同様に、仮想デスクトップ３０２はクライアントサブシステム３０６によって生成することができ、仮想デスクトップ３０２のピクセルの範囲は、サーバー２０４のディスプレイドライバーのディスプレイ解像度に対応することができる。例えば、この実施形態では、サーバー２０４は、１２８０×１０２４というディスプレイ解像度を生成するように構成されるディスプレイドライバーを含むことができる。この例では、仮想デスクトップ３０２は、１２８０×１０２４というディスプレイ解像度を含むように生成できる。別の実施形態では、サーバー２０４は、それぞれが１２８０×１０２４というディスプレイ解像度を生成する２つのディスプレイドライバーを含むことができる。この例では、仮想デスクトップ３０２は、２５６０×１０２４というディスプレイ解像度を含むように構成できる。サーバー２０４のディスプレイ解像度がクライアント２０１で同じに保たれる実施形態例では、クライアントサブシステム３０６は、高くつくサイズ変更動作および再マップ動作を実行せずにイメージをレンダリングすることができる。すなわち、仮想デスクトップ３０２の形状はサーバー２０４のディスプレイドライバーと同じなので、アイコンは、サーバー２０４上で座標（１０００、９００）に配置され、アイコンをサイズ変更および再マップせずにクライアント２０１の同じ座標に描画できる。
【００５１】
仮想デスクトップ３０２を描画することに加えて、クライアントサブシステム３０６は、ディスプレイドライバーに、仮想デスクトップ３０２のビュー３０４をレンダリングするように指示するように構成できる。この実施形態例では、ビュー３０４は第２のピクセル範囲によって画定でき、クライアント２０１のディスプレイドライバーは、仮想デスクトップ３０２のビュー表示された部分にイメージをレンダリングするように構成できる。この実施形態例では、ビュー３０４を画定するピクセル範囲は、仮想デスクトップ３０２を画定するピクセル範囲より小さくすることができる。例えば、一実施形態では、クライアント２０１は、１２８０×１０２４個のピクセルをレンダリングできる画面を有するラップトップコンピューターでよいが、サーバー２０４は、それぞれが１２８０×１０２４個のピクセルをレンダリングしている複数のモニタを有する（そのため、サーバー２０４は、基本的に５１２０×１０２４個のピクセルのリアルエステート（ｒｅａｌ  ｅｓｔａｔｅ）を有する）。別の例では、ビュー３０４は、クライアント２０１のデスクトップ上の調整可能なウィンドウであってよい。そのため、一実施形態では、サーバー２０４およびクライアントの両方が１２８０×１０２４というディスプレイ解像度を有することができるが、ビュー３０４はウィンドウ型なので、ビュー３０４は、現在、６００×４００個のピクセルを含むことができ、クライアント２０１は、残りのピクセルによってレンダリングされる別のプログラム用のユーザーインターフェイスを有することができる。
【００５２】
本開示の実施形態では、ビュー３０４を画定するピクセルの範囲は、仮想デスクトップ３０２を画定するピクセルの範囲にマップできる。例えば、クライアントサブシステム３０６は、ビュー３０４の現在のピクセル範囲を記載した情報を含むテーブルを含むように構成できる。具体的な例では、仮想デスクトップのビューが８００×６００というピクセル範囲を有し、ビュー３０４が仮想デスクトップ３０２の上部右端部分をレンダリングしている場合、そのテーブルは、ビュー３０４の現在のピクセル範囲がｘ軸のピクセル１２８０から４８０およびｙ軸の１０２４から４２４であることを記載する情報を含むことができる。別の移植では、テーブルは、ビュー（１２８０、１０２４）の上部右ピクセルなどの単一のポイントのみを含み、そのポイントをビュー３０４のディスプレイ解像度と共に使用して、エッジを画定するピクセルを計算する。
【００５３】
図１２の説明を続けると、図１２は、カーソル移動情報を受信するステップを示す動作１２０４を含む。例えば、前の例に加えて、スクロールサブシステム３０８は、本開示の一実施形態では、クライアント２０１のオペレーティングシステム３１２からカーソル移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム３１２は、カーソル３１０の移動を追跡するように構成できる。カーソル３１０は、一実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム３１２がカーソル３１０の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム３０８は、仮想デスクトップ３０２に対して相対的なカーソル３１０の絶対位置を識別する入力メッセージを受信し、その位置をカーソル３１０の前の位置と比較して、カーソルが仮想デスクトップ３０２に対して相対的に移動した方向を判定するように構成できる。代替的実施形態では、入力メッセージは相対的マウス移動情報を含むことができる。例えば、一実施形態では、クライアント２０１のオペレーティングシステム３１２は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には（＋１、＋１）などの情報を含むことができる。他の実施形態例では、スクロールサブシステム３０８は、絶対マウス移動情報および相対的マウス移動情報の両方を受信するように構成できる。
【００５４】
図１２の説明を続けると、それは、カーソル移動情報および第２のピクセル範囲から、カーソルが第２のピクセル範囲のエッジに到達したことを判定するステップを示す動作１２０６を含む。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、仮想デスクトップ３０２に対して相対的なビュー３０４のピクセル範囲を識別する情報およびカーソル３１０の現在の位置を受信するように構成できる。スクロールサブシステム３０８は、例えば、絶対マウス移動情報および／または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム３０８は、マウス移動メッセージが受信されるたびに、仮想デスクトップ３０２に対して相対的なカーソル３１０の位置を判定し、その位置を、仮想デスクトップ３０２に対して相対的にビュー３０４を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ３０２に対して相対的なカーソル３１０のｘ座標およびｙ座標を、仮想デスクトップ３０２に対して相対的にビュー３０４のエッジを画定するｘ座標およびｙ座標と比較することにより、カーソル３１０がビュー３０４のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム３０８は、仮想デスクトップ内のカーソル３１０の座標、例えば、ピクセル４００×３００、および仮想デスクトップのビューを画定するピクセル、例えば、ｘ軸上のピクセル０から８００およびｙ軸上のピクセル０から６００を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル３１０は、例えば、ビュー３０４を横切って左から右へ移動することができる。スクロールサブシステム３０８は、カーソル３１０のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、ｘ軸のピクセル８００に到達したかを検査することができる。スクロールサブシステム３０８が、ｘ軸のエッジに到達したと判定した場合、例えば、カーソル３１０がピクセルポイント８００×３００に位置していると判定した場合、スクロールサブシステム３０８は、メッセージをクライアントサブシステム３０６に送るように構成できる。
【００５５】
図１２の説明を続けると、それは、ビューをカーソル移動の方向にスクロールするステップを示す動作１２０６を含む。例えば、前の例に加えて、スクロールサブシステム３０８が、ビュー３０４のエッジに到達したと判定した場合、スクロールサブシステム３０８は、ビュー３０４をマウス移動の方向にパンするための信号をクライアントサブシステム３０６に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム３０８は、マウスがｘ軸を（−１０、０）移動したことを示す信号を受信することがある。スクロールサブシステム３０８は、カーソル３１０の位置を変更して、その位置を、ビュー３０４のエッジを画定するピクセルと比較するように構成できる。この例では、ビュー３０４の左エッジに到達することができ、スクロールサブシステム３０８は、クライアントサブシステム３０６に仮想デスクトップ３０２のビュー３０４を移動させるように指示するメッセージをクライアントサブシステム３０６に送るように構成できる。具体的な例では、ビュー３０４は、８００×６００ピクセルという解像度を含むことができ、仮想デスクトップ３０２の上部右端部分を示すことができる。クライアントサブシステム３０６は、この例では、ビューを画定する座標、例えば、ｘ軸の１２８０から４８０およびｙ軸の１０２４から４２４を保管するテーブルを含むことができる。この実施形態例では、スクロールサブシステム３０８がビュー３０４は（−１０、０）移動されるべきであると判定した場合、クライアントサブシステム３０６は、ディスプレイドライバーに、ｘ軸のピクセル範囲１２７０から４７０およびｙ軸の１０２４から４２４をレンダリングするように指示するように構成できる。
【００５６】
ここで図１３から図１６を参照すると、それらは、図１２の動作手順１２００の詳細例および追加の動作手順を示している。ここで図１３を参照すると、それは、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのスケール化イメージおよびビューのスケール化イメージを示すステップを図示した追加の動作１３１０を含む図１２の動作手順を示している。例えば、本開示の一実施形態では、クライアントサブシステム３０６は、仮想デスクトップ３０２の、ビュー３０４が示している一部分を図示するために仮想デスクトップ３０２およびビュー３０４のスケール化イメージを示すミニマップ３１６を生成するように構成できる。例えば、ミニマップ３１６を含む実施形態では、クライアントサブシステム３０６は、仮想デスクトップ３０２を画定するピクセルの範囲、および仮想デスクトップ３０２に対して相対的にビュー３０４を画定するピクセルの範囲を受信するように構成できる。この実施形態例では、クライアントサブシステム３０６は、ビュー３０４および仮想デスクトップ３０２両方のピクセル範囲を分割し、仮想デスクトップ３０２内のビュー３０４の中心のピクセル座標に対応する、スケール化ビューの中心を決定することによりミニマップ３１６を生成するように構成できる。この実施形態例では、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、ビュー３０４の位置を表示するミニマップ３１６をビュー３０４の一部分全体にレンダリングするように構成できる。この実施形態例では、ビュー３０４がスクロールされるにつれて、ビュー３０４を画定するピクセルの範囲が更新できて、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、ビュー３０４が変化したことを反映する、更新されたミニマップ３１６をレンダリングするように構成することができる。
【００５７】
本開示の別の実施形態では、ミニマップ３１６は、スケール化ビューおよびスケール化仮想デスクトップ３０２に加えて、サーバー２０４から受信されたスケール化イメージをレンダリングするように構成できる。例えば、サーバー２０４から受信された各ウィンドウ、および／またはアイコン描画コマンドは、仮想デスクトップ３０２内のピクセル位置に関連付けることができる。この実施形態例では、クライアントサブシステム３０６は、ウィンドウおよび／またはアイコンをスケールして、スケール化仮想デスクトップ内のスケール化ウィンドウおよび／またはスケール化アイコンのピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム３０６は、クライアント２０１のディスプレイドライバーを、スケール化アイコンおよび／またはスケール化ウィンドウを含むミニマップ３１６をビュー３０４の一部分全体にレンダリングするように構成できる。
【００５８】
本開示のさらに別の実施形態では、ミニマップ３１６は、ビューおよび仮想デスクトップの塗りつぶしイメージまたは半透明イメージをビュー３０４全体にレンダリングすることができるが、一実施形態では、計算能力を維持するために、クライアントサブシステム３０６は、ビュー３０４および仮想デスクトップ３０２のワイヤフレームを生成するように構成できる。例えば、ワイヤフレームは、一実施形態では、ピクセルの範囲によって画定されるビューおよび仮想デスクトップのエッジを識別することにより作成されるビジュアルプリゼンテーションを含むことができる。
【００５９】
ここで図１４を参照すると、それは、仮想デスクトップに生成されたプログラムのユーザーインターフェイス用のピクセル座標を受信するステップと、プログラムのユーザーインターフェイス用の識別子をミニマップに生成するステップとを図示した追加の動作１４１０を含む図１３の動作手順を示している。例えば、本開示の一実施形態では、クライアント２０１のネットワークアダプターは、サーバー２０４から、プログラムのユーザーインターフェイス用の座標を識別する信号を受信するように構成できる。クライアントサブシステム３０６は、その信号を受信できて、クライアント２０１のディスプレイドライバーに、仮想デスクトップ３０２のどの部分にユーザーインターフェイスが描画されたかを素早く判定するために使用できるミニマップ３１６に識別子をレンダリングするように指示することができる。例えば、サーバー２０４の実行時サブシステム２４０は、プログラム用のプロセスおよびスレッドを生成するように構成できる。この実施形態例では、リモートディスプレイサブシステム２５４は、例えば、プロセスが開始された時の通知、およびプログラム用のユーザーインターフェイスの座標を識別する情報をＧＤＩ２４６から受信するように構成できる。リモートディスプレイサブシステム２５４は、ピクセル範囲、または新しく生成されたユーザーインターフェイス用のピクセルポイントを識別するメッセージを生成し、信号をトランスポートロジック２１０を介してクライアント２０１に送るように構成できる。クライアントサブシステム３０６は、そのメッセージを受信して、クライアント２０１のディスプレイドライバーに、スケール化ユーザーインターフェイス、または、例えば、スケール化ユーザーインターフェイスのワイヤフレームを含むミニマップ３１６をビュー３０４の一部分全体にレンダリングするように指示するように構成できる。クライアントサブシステム３０６は、次に、ディスプレイドライバーを、ユーザーインターフェイスが仮想デスクトップ３０２のどこにレンダリングされたかをユーザーが素早く識別できるようにするために、スケール化ユーザーインターフェイスのカラーを、所定の時間、変更するように構成できる。
【００６０】
ここで図１５を参照すると、それは、追加の動作１５１４および動作１５１６ならびに詳細１５１８を含む図１２の動作手順を示している。図１２の説明を続けると、動作１５１２は、線形加速因数をカーソル移動情報に適用するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、カーソル移動情報を受信し、そのカーソル移動情報にスケール値を掛け、ビュー３０４をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム３０６に送信するように構成できる。例えば、一実施形態例では、ビュー３０４を相対的マウス移動の量より多い数のピクセルだけパンすることが望ましいことがある。例えば、クライアント２０１がタッチパッドを含む実施形態例では、ユーザーは、仮想デスクトップ３０２の一方のサイドから他方のサイドへビュー３０４を移動させるために、タッチパッドを横切って指を不合理な回数スクロールしなければならないことがある。そのため、一実施形態では、スクロールサブシステム３０８は、相対的移動情報に固定値を掛けて、クライアントサブシステム３０６に、ビュー３０４をスケール化量だけ移動させるように指示することができる。具体的な例では、スクロールサブシステム３０８は、カーソル位置が、ビュー３０４の右エッジを画定するピクセル上にあることを判定するように構成できる。この例では、ユーザーがマウスをｘ方向に＋１だけ移動させると、スクロールサブシステム３０８は、ピクセル移動に５０などの固定数を掛けて、ビュー３０４をｘ方向に５０ピクセルだけ移動（パン）するためのメッセージをクライアントサブシステム３０６に送ることができる。
【００６１】
図１５の説明を続けると、それは、カーソルの速さを決定するステップと、動的加速因数を生成するステップであって、動的加速因数はカーソルの速さの関数であるステップと、動的加速因数をカーソル移動情報に適用するステップとを例示した動作１５１６を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、相対的カーソル移動情報を受信し、その相対的カーソル移動情報に動的スケール値を掛け、ビュー３０４をスケール化値で定義された量でスクロールするための信号をクライアントサブシステム３０６に送信するように構成できる。例えば、一実施形態では、カーソル３１０がビュー３０４を横切って素早く移動する場合、ビュー３０４を多数のピクセルだけパンすることが望ましいことがある。例えば、ユーザーがカーソル３１０をビュー３０４を横切って移動させる場合、ユーザーは仮想デスクトップ３０２の遠端の何かを操作することに関心があることが推察できる。この例では、スクロールサブシステム３０８は、ユーザーの意図がビュー３０４を多数のピクセルだけパンし、適宜、対応することであることを推察するように構成できる。この状況では、スクロールサブシステム３０８は、カーソル３１０がビュー３０４を横切って移動する間、カーソル３１０の速さに依存するスケール値を生成するように構成できる。例えば、この例では、スクロールサブシステム３０８は、最後の６４個のサンプル全体にわたってカーソル３１０の座標を追跡するように構成できる。この例では、サンプリング率は固定であってよく、スクロールサブシステム３０８は、カーソル３１０の平均の速さを判定するように構成できる。この例では、スクロールサブシステム３０８は、カーソル３１０の平均の速さに基づいてスケール値を大きくし、クライアントサブシステム３０６に、ビュー３０４をスケール化量だけパンするように指示するように構成できる。例えば、ある実施形態例では、スケール値は速さと共に急激に増加することができる。そのため、カーソル３１０がビュー３０４内を移動する速さが速ければ速いほど、ビュー３０４は、クライアントサブシステム３０６によって、より多くスクロールされることになる。具体的な実施形態では、カーソル３１０は、ビュー３０４を横切って左から右へ移動することができる。この例では、スクロールサブシステム３０８は、カーソル３１０の座標はｘ方向に＋１０でサンプルを変更していること示す多数のメッセージを受信することができる。この実施形態で、スクロールサブシステム３０８は、ｅ＾１０を取ることにより動的加速因数を決定し、クライアントサブシステム３０６に、ビュー３０４をｘ方向に２２，０２６個のピクセルだけ移動させるように指示するように構成できる。同じ実施形態または他の実施形態では、スクロールサブシステム３０８は、４０３などの最大の動的な値を設定するように構成できて、そのため、この状況では、クライアントサブシステム３０６は、何千個のピクセルをスクロールすることによってビュー３０４を大量に変更することはできない。
【００６２】
図１５の説明を続けると、それは、図１２の動作手順の詳細１５１６を追加的に示しており、第１のピクセル範囲は第１のディスプレイドライバーのディスプレイ解像度およびリモートコンピューターの第２のディスプレイドライバーの第２のディスプレイ解像度にさらに対応し、さらに第１のディスプレイドライバーのディスプレイ解像度は第１のエッジによって画定され、第２のディスプレイドライバーのディスプレイ解像度は第２のエッジによって画定されるものとする。例えば、本開示の一実施形態では、サーバー２０４は、少なくとも２つのディスプレイドライバーを含むリモートディスプレイサブシステム２５４を含むことができる。この例では、各ディスプレイドライバーは、それ自身のディスプレイ解像度を有することができ、それらのディスプレイ上のイメージを表す信号をトランスポートロジック２１０を介してクライアント２０１に送信するように構成できる。この実施形態例では、第１のディスプレイドライバーは、１２８０×１０２４ピクセルというディスプレイ解像度で動作するように構成でき、第２のディスプレイドライバーは、８００×６００ピクセルという解像度で動作することができる。この実施形態例では、図３のクライアントサブシステム３０６は、各ディスプレイ用の個別のデータストリームを受信し、ディスプレイ解像度の合計を含む仮想デスクトップ３０２を生成し、例えば、第２のディスプレイドライバーのピクセル範囲を、仮想デスクトップ３０２と一致するように再マップするように構成できる。この実施形態例では、クライアントサブシステム３０６は、第１のディスプレイ解像度および第２のディスプレイ解像度を定義するピクセルの範囲を使用して、仮想デスクトップ３０２内の各ディスプレイ用のエッジを決定することができる。例えば、クライアントサブシステム３０６は、各ディスプレイのピクセル範囲を仮想デスクトップ３０２全体のピクセル範囲に関連付けるテーブルを含むことができる。第１のディスプレイドライバー用のディスプレイ解像度が１２８０×１０２４であって、第２のディスプレイドライバー用のディスプレイ解像度が８００×６００である実施形態では、ディスプレイドライバーの物理的レイアウトが第２のディスプレイを論理的に第１のディスプレイの右側になるように設定されると、テーブルは、第２のディスプレイドライバー用のピクセルを仮想ディスプレイ３０２のｘ軸のピクセル番号１２８０から２０８０、および第２のディスプレイドライバーの垂直位置合わせに応じて、例えば、ｙ軸の０から６００または４２４から１０２４にマップすることができる。
【００６３】
ここで図１６を参照すると、それは、カーソルが第１のディスプレイドライバーのディスプレイ解像度の特定のエッジに到達したことを判定するステップであって、特定のエッジは第２のディスプレイドライバーの特定のエッジに隣接するステップと、ビューを、第２のディスプレイドライバーに対応する仮想デスクトップのエリアにセンタリングするステップとを示した追加の動作１６１８を含む図１５の動作手順の代替的実施形態を示している。例えば、本開示の一実施形態では、スクロールサブシステム３０８は、各ディスプレイドライバーのピクセル範囲を仮想ディスプレイ３０２のマップされたピクセル範囲に関連付けて含むように構成できる。この実施形態例では、スクロールサブシステムは、クライアント２０１のオペレーティングシステム３１２からカーソル移動情報を受信し、仮想デスクトップ３０２に対して相対的なカーソル３１０の座標を保管するように構成できる。この実施形態例では、仮想デスクトップ３０２に対して相対的なカーソル３１０の位置は追跡可能であり、カーソル３１０がディスプレイドライバーのエッジ、例えば、ｘ方向のピクセル１２８０に到達すると、スクロールサブシステム３０８は、クライアントサブシステム３０６に、第２のディスプレイに対応する仮想デスクトップのピクセル上でセンタリングされたピクセルの範囲を表示するようにディスプレイドライバーに指示するためのメッセージを送るように構成できる。
【００６４】
前述の詳しい説明は、システムおよび／またはプロセスの様々な実施形態を例および／または動作図を通して記載している。そのようなブロック図および／または例が１つまたは複数の機能および／または動作を含む場合、当業者は、そのようなブロック図または例の中の各機能および／または動作は、個別に、および／またはまとめて、多様なハードウェア、ソフトウェア、ファームウェア、または実質的にそれらの任意の組み合わせによって実施できることが理解できよう。
【００６５】
本明細書で説明された本主題の詳細な態様が示され、説明されたが、当業者には、本明細書の手法に基づいて、本明細書で説明される主題およびそのより広範な態様から逸脱することなく変更および修正を行えることは明らかであろうし、したがって、添付の特許請求の範囲に記載の請求項は、それらの範囲内に、明細書で説明される主題の真の趣旨および範囲に含まれるようなすべての変更および修正を包含するものとする。
【図１】
2011520209.tif 000003
【図２】
2011520209.tif 000004
【図３】
2011520209.tif 000005
【図４】
2011520209.tif 000006
【図５】
2011520209.tif 000007
【図６】
2011520209.tif 000008
【図７】
2011520209.tif 000009
【図８】
2011520209.tif 000010
【図９】
2011520209.tif 000011
【図１０】
2011520209.tif 000012
【図１１】
2011520209.tif 000013
【図１２】
2011520209.tif 000014
【図１３】
2011520209.tif 000015
【図１４】
2011520209.tif 000016
【図１５】
2011520209.tif 000017
【図１６】
2011520209.tif 000018
【国際調査報告】
2011520209.tif 000019
2011520209.tif 000020