JP5249409B2 - 仮想デスクトップのビューのスクロール - Google Patents

仮想デスクトップのビューのスクロール Download PDF

Info

Publication number
JP5249409B2
JP5249409B2 JP2011509506A JP2011509506A JP5249409B2 JP 5249409 B2 JP5249409 B2 JP 5249409B2 JP 2011509506 A JP2011509506 A JP 2011509506A JP 2011509506 A JP2011509506 A JP 2011509506A JP 5249409 B2 JP5249409 B2 JP 5249409B2
Authority
JP
Japan
Prior art keywords
virtual desktop
view
cursor
subsystem
display driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011509506A
Other languages
English (en)
Other versions
JP2011520209A5 (ja
JP2011520209A (ja
Inventor
ソール エルトン
ウィルヘルム シュミーダー ロバート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011520209A publication Critical patent/JP2011520209A/ja
Publication of JP2011520209A5 publication Critical patent/JP2011520209A5/ja
Application granted granted Critical
Publication of JP5249409B2 publication Critical patent/JP5249409B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0485Scrolling or panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/34Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators for rolling or scrolling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

本発明は、仮想デスクトップをナビゲートするための、方法、及びこれを実行する命令を記憶するコンピューター読み取り可能記録媒体、及び、システムに関する。
リモートコンピューティングシステムでは、ユーザーは、リモートコンピューターによってホストされるリソースへアクセスすることができる。リモートコンピューティングシステムでは、絶対に必要なコンポーネントはクライアントおよびサーバーである。このシステムでのサーバーはプログラムを実行し、TCP/IPプロトコルなどの通信プロトコルを使用して、接続するクライアントへユーザーインターフェイスを表す信号を送信する。各接続元クライアントはセッション、例えば、リソースのセットを含む実行環境が提供される。各クライアントはユーザー入力を表す信号をサーバーに送信し、サーバーは、そのユーザー入力を適切なセッションに適用する。
一般的に、クライアントがサーバーに接続すると、サーバーのディスプレイドライバー(複数可)が特定のディスプレイ解像度でユーザーインターフェイスを生成することができる。状況によっては、サーバーのディスプレイ解像度は、クライアントのディスプレイ解像度より高いことがある。このアーキテクチャーでは、セッションのユーザーインターフェイスはサーバーによって生成され、クライアントではレンダリングされるだけなので、クライアントは、セッションがクライアント上でどのように見えるかを変更するためにサーバーのディスプレイ設定値を変更する必要があるだろう。
しかし、状況によっては、クライアントを配慮してディスプレイ設定値を変更することは望ましくないことがある。例えば、サーバーのディスプレイは、ユーザーに技術サポートを提供するためにクライアントがリモートで接続されている間、ユーザーインターフェイスをレンダリングするように、またはユーザーとプロジェクトで協働的に働くように構成できる。サーバーのディスプレイ設定値がクライアントに対応するように調整されると、サーバーのオペレータのユーザー経験は減少するであろう。別の状況では、クライアントの最適な解像度がサーバーのディスプレイドライバーでサポートされないこともある。この状況では、ディスプレイ設定値を変更すると、サーバーにアタッチされた物理的なディスプレイを損傷させることすらありえる。
現在の手法は、ユーザーインターフェイスのビューをスクロールするためにスクロールバー、例えば、グラフィカルウィジェットを提供している。スクロールバーが移動するにつれて、ユーザーインターフェイスのビューはパンされる。しかし、この手法は煩わしく、通常の作業の流れを中断する。例えば、ファイルをユーザーインターフェイスの一端から他端までドラッグしたいユーザーは、ファイルをUIの示された一部分のエッジまでドラッグし、スクロールバーを全体にわたって動かし、ファイルを所望の位置までドラッグしなければならない。別の例では、複数の物理的モニタにまたがったユーザーインターフェイスで作業するユーザーは、注意の焦点を変更するにつれて、当然ながら、カーソルを1つのモニタから別のモニタへ移動させる。ユーザーがユーザーインターフェイスの異なる部分を表示するためにスクロールバーを動かす必要があれば、この自然な作業の流れは中断される。そのため、ユーザーインターフェイスをナビゲートするための、より自然な直観的方法を提供することが望ましい。
本開示の一実施形態例は、限定ではないが、リモートコンピューターから受信された形状情報から、リモートコンピューターのディスプレイドライバーのディスプレイ解像度を有する仮想デスクトップを生成するステップと、リモートコンピューターから受信されたグラフィックスを仮想デスクトップに描画するステップと、仮想デスクトップのビューをレンダリングするステップであって、ビューはエッジによって画定され、仮想デスクトップの一部分を示すステップと、相対的カーソル移動情報を受信するステップとを含む方法を説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
本開示の一実施形態例は、限定ではないが、リモートコンピューターから受信されたグラフィックスを示す仮想デスクトップのビューをレンダリングするための命令であって、ビューはピクセルの範囲によって画定され、仮想デスクトップはリモートコンピューターのディスプレイ解像度に相当するピクセルの範囲によって画定される命令と、相対的カーソル移動情報を受信するための命令と、相対的カーソル移動情報およびビューを画定するピクセルの範囲から、カーソルがビューのエッジに到達したことを判定するための命令と、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするための命令とを含むコンピューター読み取り可能な命令を収めたコンピューター読み取り可能なストレージ媒体を説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
本開示の一実施形態例は、限定ではないが、仮想デスクトップのビューをレンダリングするための回路であって、仮想デスクトップは、リモートコンピューターのディスプレイ解像度に相当する第1のピクセルの範囲によって画定され、ビューは第2のピクセル範囲によって画定される回路と、カーソル移動情報を受信するための回路と、カーソル移動情報および第2のピクセル範囲から、カーソルが第2のピクセル範囲のエッジに到達したことを判定するための回路と、ビューをカーソル移動の方向にスクロールするための回路とを含むコンピューターシステムを説明している。前述のことに加えて、他の態様が特許請求の範囲、図面、および本開示の一部を形成するテキストで説明されている。
当業者は、本開示の1つまたは複数の様々な態様が、限定ではないが、本明細書で参照される本開示の態様を実施するための回路および/またはプログラミングを含むことができ、その回路および/またはプログラミングは、実際には、システム設計者の設計選択に応じて、本明細書で参照される態様を実施するように構成されたハードウェア、ソフトウェア、および/またはファームウェアの任意の組み合わせが可能なことが理解できよう。
前述のことは概要であり、そのため、必然的に、詳細の簡略化、一般化および省略を含む。当業者は、概要は例示にすぎず、決して限定として意図されていないことが理解できよう。
本開示の態様を実施できるコンピューターシステムの例を示した図である。 本開示の態様を実施できる端末サーバーの例を示した図である。 本開示の態様を実施できるクライアントの例を示した図である。 本開示の態様を実行するためのフローチャートの例を示した図である。 図4の動作手順400の代替的実施形態を示した図である。 図5の動作手順400の代替的実施形態を例示した図である。 図6の動作手順400の代替的実施形態を例示した図である。 本開示の態様を実行するためのフローチャートの例を示した図である。 図8の動作手順800の代替的実施形態を例示した図である。 図9の動作手順800の代替的実施形態を例示した図である。 図10の動作手順800の代替的実施形態を例示した図である。 本開示の態様を実行するためのフローチャートの例を示した図である。 図12の動作手順1200の代替的実施形態を示した図である。 図13の動作手順1200の代替的実施形態を示した図である。 図14の動作手順1200の代替的実施形態を示した図である。 図15の動作手順1200の代替的実施形態を示した図である。
本開示の多数の実施形態がコンピューター上で実行できる。図1および以下の説明は、本開示を実施できる適切なコンピューティング環境の簡潔な概略を提供するように意図されている。当業者は、図1のコンピューターシステムは、一部の実施形態では、図2のサーバー204および図3のクライアント201を達成できることが理解できよう。これらの実施形態例では、サーバー204およびクライアント201は、図1で説明されるコンポーネントの一部または全部を含むことがあり、一部の実施形態では、サーバー204およびクライアント201は、本開示の具体的な態様をインスタンス化するように構成された回路を含むことがある。例えば、本開示全体で使用される用語「回路」は、ファームウェアまたはスイッチによって機能(複数可)を実行するように構成された専用のハードウェアコンポーネントを含むことがある。他の実施形態例では、用語「回路」は、機能(複数可)を実行するように動作可能なロジックを実施するソフトウェア命令によって構成された汎用プロセッシングユニット、メモリなどを含むことがある。回路がハードウェアおよびソフトウェアの組み合わせを含む実施形態例では、作成者は、ロジックを実施するソースコードを書くことができ、ソースコードは機械読み取り可能なコードにコンパイルされ、そのコードを汎用プロセッシングユニットが処理することができる。当業者は、最新の技術がハードウェア、ソフトウェア、またはハードウェア/ソフトウェアの組み合わせの違いはほとんどない程度にまで進化していることを理解できるので、具体的な機能を達成するためのハードウェア対ソフトウェアの選択は、作成者に任された設計上の選択である。より具体的には、当業者は、ソフトウェアプロセスは同等のハードウェア構造に変換でき、ハードウェア構造は自体が同等のソフトウェアプロセスに変換できることが理解できよう。そのため、「ハードウェアの実装」対「ソフトウェアの実装」の選択は、設計上の選択であり、作成者に任される。
ここで図1を参照すると、例示の汎用コンピューティングシステムが示されている。汎用コンピューティングシステムは、プロセッシングユニット21、システムメモリ22、システムメモリなどの各種システムコンポーネントをプロセッシングユニット21に結合するシステムバス23を含む、従来のパーソナルコンピューター20等を含むことが可能である。システムバス23は、いくつかのタイプのバス構造のうちの、様々なバスアーキテクチャーの任意のものを使用するメモリバス、メモリコントローラー、周辺バス、およびローカルバスなど、任意のバス構造でよい。システムメモリには、ROM(読み取り専用メモリ)24、RAM(ランダムアクセスメモリ)25がある。起動中などにパーソナルコンピューター20内の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(基本入出力システム)26がROM24に保管されている。パーソナルコンピューター20は、ハードディスク(図示せず)から読み取り、ハードディスクに書き込むためのハードディスクドライブ27、取り外し可能磁気ディスク29から読み取るか、または取り外し可能磁気ディスク29に書き込むための磁気ディスクドライブ28、および取り外し可能光ディスク31、例えば、CD ROMまたは他の光媒体から読み取るか、または取り外し可能光ディスク31、例えば、CD ROMまたは他の光媒体に書き込むための光ディスクドライブ30をさらに含むことが可能である。一部の実施形態例では、本開示の態様を実施するコンピューター実行可能な命令は、ROM24、ハードディスク(図示せず)、RAM25、取り外し可能磁気ディスク29、光ディスク31、および/またはプロセッシングユニット21のキャッシュに保管できる。ハードディスクドライブ27、磁気ディスクドライブ28および光ディスクドライブ30は、それぞれ、ハードディスクドライブインターフェイス32、磁気ディスクドライブインターフェイス33、および光ドライブインターフェイス34によってシステムバス23に接続されている。ドライブおよびそれに関連付けられたコンピューター読み取り可能な媒体は、パーソナルコンピューター20用のコンピューター読み取り可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供する。本明細書で説明される例示の環境はハードディスク、取り外し可能磁気ディスク29および取り外し可能光ディスク31を使用するが、当業者は、コンピューターがアクセス可能なデータを保管できる他のタイプのコンピューター読み取り可能な媒体、例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、Bernoulli(ベルヌーイ)カートリッジ、RAM(ランダムアクセスメモリ)、ROM(読み取り専用メモリ)、なども例示の動作環境で使用できることを理解されたい。
ハードディスク、磁気ディスク29、光ディスク31、ROM24またはRAM25にオペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37およびプログラムデータ38など、多数のプログラムモジュールを保管できる。ユーザーは、キーボード40およびポインティングデバイス42などの入力デバイスからパーソナルコンピューター20にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星ディスク、スキャナーなどがある。これらの入力デバイスおよび他の入力デバイスは、多くの場合、システムバスに結合されたシリアルポートインターフェイス46を介してプロセッシングユニット21に接続されるが、他のインターフェイス、例えば、パラレルポート、ゲームポートまたはUSB(ユニバーサルシリアルバス)などによって接続されてもよい。ディスプレイ47または他のタイプのディスプレイデバイスも、ビデオアダプター48などのインターフェイスを介してシステムバス23に接続できる。ディスプレイ47に加えて、パーソナルコンピューターは、一般的に、他の周辺出力デバイス(図示せず)、例えば、スピーカーおよびプリンターなどを含む。図1の例示のシステムは、ホストアダプター55、SCSI(スモールコンピューターシステムインターフェイス)バス56、およびSCSIバス56に接続された外部ストレージデバイス62も含む。
パーソナルコンピューター20は、リモートコンピューター49などの1つまたは複数のリモートコンピューターとの論理的接続を使用するネットワーク環境で動作することができる。リモートコンピューター49は、別のパーソナルコンピューター、サーバー、ルータ、ネットワークPC、ピアデバイス、または他の一般ネットワークノードでよく、通常は、パーソナルコンピューター20に関して上述された要素の多くまたは全部を含むことが可能であるが、図1には、メモリストレージデバイス50のみが例示されている。図1に示された論理的接続は、LAN(ローカルエリアネットワーク)51およびWAN(ワイドエリアネットワーク)52を含んでよい。そのようなネットワーク接続する環境は、オフィス、企業全体のコンピューターネットワーク、イントラネットおよびインターネットでは普通である。
LANネットワーキング環境で使用される場合、パーソナルコンピューター20は、ネットワークインターフェイスまたはネットワークアダプター53を介してLAN51に接続できる。WANネットワーキング環境で使用される場合、パーソナルコンピューター20は、通常、モデム54、またはインターネットなどのワイドエリアネットワーク52を介して通信を確立するための他の手段を含むことが可能である。モデム54は、内蔵でも、外付けでもよいが、シリアルポートインターフェイス46を介してシステムバス23に接続できる。ネットワーク環境では、パーソナルコンピューター20に関して示されたプログラムモジュール、またはプログラムモジュールの部分はリモートメモリストレージデバイスに保管できる。示されたネットワーク接続は例示であって、コンピューター間に通信リンクを確立するための他の手段が使用できることを理解されたい。さらに、本開示の多くの実施形態が特にコンピューター化されたシステムに良く適合すると想像されているが、この文書中の何物も、本開示をそのような実施形態に限定することは意図されていない。
ここで図2および図3を参照すると、それらは、本開示の態様が実施できる環境の例を概略的に示している。当業者は、図2および図3に示された要素の例は、本開示を説明するための運用上の枠組みを提供するために示されていることが理解できよう。したがって、一部の実施形態では、各環境の物理的レイアウトは、実施構想の違いに応じて異なる可能性がある。そのため、運用上の枠組みの例は、例示としてのみ扱われるべきであり、決して特許請求の範囲を限定するものではない。当業者は、以下は紹介のための説明であり、図2および図3に示された要素は、図4から図16で示される動作手順の説明でより詳しく解説されることも理解できよう。
一般的に、図2は、本開示の態様を含むように構成できるサーバー環境のハイレベルな概要を示している。図2を参照すると、端末サーバーを達成するように構成された回路を含むことが可能なサーバー204が示されている。または、他の実施形態では、サーバー204は、リモートデスクトップ接続をサポートするように構成された回路を含むことが可能である。示された例では、サーバー204は、クライアントを接続するために1つまたは複数のセッション、例えば、セッション1からN(Nは2より大きい整数)を生成するように構成できる。簡潔に言えば、本開示の実施形態例におけるセッションは、一般的に、サーバー204のカーネル214と対話するように構成される複数のサブシステム、例えば、ソフトウェアコードによって達成される動作環境を含めることが可能である。例えば、セッションは、デスクトップウィンドウなどのユーザーインターフェイスをインスタンス化するプロセス、ウィンドウ内のマウスの動きを追跡するサブシステム、アイコンのマウスクリックを、プログラムのインスタンスを達成するコマンドに変換するサブシステムなどを含むことが可能である。セッションは、例えば、サーバー204がクライアント201からネットワーク接続を介して接続要求を受信した時、サーバー204がユーザーごとに生成できる。一般的に、接続要求は、例えば、サーバー204の回路によって達成できるトランスポートロジック210によって最初に処理できる。トランスポートロジック210は、一部の実施形態では、ネットワークアダプター、ファームウェア、および接続メッセージを受信して、それらをエンジン212に転送するように構成できるソフトウェアを含むことが可能である。図2に例示されているように、トランスポートロジック210は、一部の実施形態では、各セッション用のプロトコルスタックインスタンスを含んでよい。一般的に、各プロトコルスタックインスタンスは、ユーザーインターフェイスの出力をクライアントに経路指定し、クライアントから受信されたユーザー入力を、そのセッションに関連付けられたセッションコア244に経路指定するように構成できる。
図2の概括的な説明を続けると、本開示の一部の実施形態例におけるエンジン212は、セッション用の要求を処理し、各セッション用の機能を決定し、セッションに1セットの物理的リソースを割り振ることによりセッションを生成し、そのセッション用にプロトコルスタックインスタンスをインスタンス化するように構成できる。一部の実施形態では、エンジン212は、上述の動作手順の一部を実施できる専用回路コンポーネントによって達成できる。例えば、一部の実施形態例における回路は、メモリ、およびエンジン212を達成するコードを実行するように構成されたプロセッサを含むことが可能である。図2に示されているように、一部のインスタンスでは、エンジン212は接続要求を受信し、例えば、ライセンスがあり、その要求に対してセッションが構成できることを判定できる。サーバー204が、リモートデスクトップ機能を含むリモートコンピューターである状況では、エンジン212は、接続要求に応答して、ライセンスの有無をチェックせずにセッションを生成するように構成できる。図2に例示されているように、セッションマネージャー216は、エンジン212からのメッセージを受信するように構成できて、そのメッセージに応答して、セッションマネージャー216は、テーブルにセッション識別子を追加し、セッション識別子にメモリを割り当て、セッション識別子に割り当てられたメモリに、システム環境変数およびサブシステムプロセスのインスタンスを生成することができる。
図2に例示されているように、セッションマネージャー216は、セッションコア244などのカーネルモード部を含むことが可能な、実行時サブシステム240などの環境サブシステムをインスタンス化できる。例えば、一実施形態における環境サブシステムは、サービスのいくつかのサブセットをアプリケーションプログラムに公開し、アクセスポイントをオペレーティングシステム214のカーネルに提供するように構成される。実施形態例では、実行時サブシステム240は、プロセスおよびスレッドの実行を制御することができ、セッションコア244は要求をカーネル214のエグゼキュティブに送ってスレッドにメモリを割り振り、要求が実行される時間をスケジュールすることができる。一実施形態では、セッションコア244は、GDI(グラフィックディスプレイインターフェイス)246、セキュリティサブシステム250および入力サブシステム252を含むことが可能である。入力サブシステム252は、これらの実施形態では、クライアント201からのユーザー入力を、セッションに関連付けられたプロトコルスタックインスタンスを介して受信し、その入力を適切なセッション用のセッションコア244に送信するように構成できる。ユーザー入力は、一部の実施形態では、絶対マウス移動コマンドおよび/または相対的マウス移動コマンド、マウス座標、マウスクリック、キーボード信号、ジョイスティック移動信号などを表す信号を含むことが可能である。ユーザー入力、例えば、アイコンのマウスダブルクリックは、セッションコア244によって受信できて、入力サブシステム252は、アイコンが、ダブルクリックに関連付けられた座標にあるかを判定するように構成できる。次に、入力サブシステム252は、アイコンに関連付けられたアプリケーション用のプロセスを実行できる実行時サブシステム240に通知を送るように構成できる。
クライアント201から入力を受信することに加えて、描画コマンドはアプリケーションおよび/またはデスクトップから受信でき、GDI246によって処理できる。GDI246は、一般的に、グラフィカルオブジェクト描画コマンドを生成できるプロセスを含むことが可能である。GDI246は、この実施形態例では、その出力をリモートディスプレイサブシステム254に渡すように構成することができ、コマンドは、リモートディスプレイサブシステム254で、セッションにアタッチされているディスプレイドライバー用にフォーマットされる。いくつかの実施形態例では、1つまたは複数の物理的ディスプレイがサーバー204に、例えば、リモートデスクトップ状況でアタッチできる。これらの実施形態例では、リモートディスプレイサブシステム254は、リモートコンピューターシステムのディスプレイドライバー(複数可)によってレンダリングされる描画コマンドをミラーして、ミラーされた情報を、セッションに関連付けられたスタックインスタンスを介してクライアント201に送信するように構成できる。サーバー204が端末サーバーである別の実施形態例では、リモートディスプレイサブシステム254は、サーバー204に物理的にアタッチされたディスプレイに関連付けられなくてよい仮想ディスプレイドライバー(複数可)を含むように構成できる。例えば、サーバー204はヘッドレスで稼働しているはずである。リモートディスプレイサブシステム254は、この実施形態では、1つまたは複数の仮想ディスプレイに対する描画コマンドを受信し、それらのコマンドを、セッションに関連付けられたスタックインスタンスを介してクライアント201に送信するように構成できる。本開示の実施形態では、リモートディスプレイサブシステム254は、各ディスプレイドライバーに対してディスプレイ解像度を決定して、例えば、仮想ディスプレイに関連付けられた仮想ディスプレイドライバー(複数可)のディスプレイ解像度、または物理的ディプレイに関連付けられたディスプレイドライバーのディスプレイ解像度を決定して、パケットを、関連付けられたプロトコルスタックインスタンスを介してクライアント201に経路指定するように構成できる。
一部の実施形態例では、セッションマネージャー216は、セッションのログオンおよびログオフを処理するように構成できる、セッションのセッション識別子に関連付けられたログオンプロセスのインスタンスを追加的にインスタンス化できる。これらの実施形態例では、クライアント201のユーザーがアカウント識別子、例えば、ユーザー名/パスワードの組み合わせ、スマートカード識別子および/または生体情報をログオン画面に入力できる、ログオンプロセスに関連付けられたグラフィカルユーザーインターフェイスを表す描画コマンドをクライアント201に送信することができる。この情報はサーバー204に送信して、エンジン212およびセッションコア244のセキュリティサブシステム250に経路指定することができる。例えば、いくつかの実施形態例では、エンジン212は、ユーザーアカウントがライセンスに関連付けられているかを判定するように構成できる。また、セキュリティサブシステム250は、セッション用のセキュリティトークンを生成するように構成できる。
ここで図3を参照すると、それは、本開示の態様を実施できるクライアント例201を示している。一般的に、図3のクライアント例201は、インターネットを介してサーバー204に動作可能なように結合できる。一実施形態では、クライアント201は、ユーザー入力をサーバー204に方向づけて(direct)、サーバー204によって生成されたユーザーインターフェイス情報を表示するように構成されたハードウェアによって達成されるコンピューターまたは端末でよい。別の実施形態では、クライアント201は、図1のパーソナルコンピューター20の要素に類似した要素を含むコンピューターであってよい。この実施形態例では、クライアント201は、オペレーティングシステム312を達成するように構成された回路および端末の機能をエミュレートするように構成された回路を含むことが可能である。当業者は、オペレーティングシステム312を達成するように構成された回路は、端末をエミュレートするようにも構成できることが理解できよう。図3の概略を続けると、クライアント201は、一部の実施形態で、エグゼキュティブサービスのサブセットを公開できるクライアントサブシステム306、およびAPI呼び出しをカーネル314用のカーネルモードの呼び出しに変換するDLLを含むことが可能である。一実施形態では、クライアントサブシステム306は、クライアント201に結合できるディスプレイ用のディスプレイドライバーを含むことが可能である。クライアントサブシステム306は、サーバー204から描画コマンドを受信して、ディスプレイドライバーに、イメージを仮想デスクトップ302に描画するように指示するように構成できる。仮想デスクトップ302がメモリ内に描画されると、ディスプレイドライバーは、仮想デスクトップ302のビューを物理的ディスプレイにレンダリングするように構成できる。例えば、クライアントサブシステム306は、ディスプレイドライバーに、仮想デスクトップ302のビュー304を取って、それをディスプレイにレンダリングするように指示することができる。図3の概略を続けると、一部の実施形態でクライアントサブシステム306の一部分、またはクライアントサブシステム306の対話する別個のサブシステムであってよいスクロールサブシステム308が示されている。スクロールサブシステム308は、一般的には、様々な変数を追跡することにより、仮想デスクトップ302のビュー304をいつスクロールすべきかを決定するように構成できる。
以下は、プロセスの実施を示す一連のフローチャートである。分かり易くするために、フローチャートは、初めのフローチャートが総合的な「全体像」の観点による実施を表すように編成されている。当業者は、本明細書で使用される提示スタイル(例えば、総合的なビューを表すフローチャート(複数可)の提示から始まって、その後で、後続のフローチャートで追加および/またはさらに詳細を提供する)では、一般的に、様々な動作手順を素早く、容易に理解できることが理解できよう。
ここで図4を参照すると、本開示の態様を実行するための、動作400から動作412を含むフローチャートの例が示されている。動作例400は動作手順を開始し、動作402は、リモートコンピューターから受信された形状情報から、リモートコンピューターのディスプレイドライバーのディスプレイ解像度を有する仮想デスクトップを生成するステップを示している。例えば、図3と並行して図2を参照すると、クライアント201は、サーバー204から信号、例えば、形状情報を表す1つまたは複数のパケットの情報を受信するように構成でき、図3のクライアントサブシステム306は、その情報を処理して仮想デスクトップ302をメモリ内に生成するように構成できる。一実施形態例では、形状情報は、サーバー204のディスプレイドライバーのディスプレイ解像度を定義することができ、クライアントサブシステム306は、仮想デスクトップ302、例えば、サーバー204と同じディスプレイ解像度を有するビットマップを生成することができる。
本開示の一実施形態では、サーバー204のリモートディスプレイサブシステム254は、例えば、サーバー204のディスプレイドライバー(複数可)に関連付けられたディスプレイピクセル量と等しいピクセル量を含む境界ボックスを生成することにより形状情報を生成するように構成できる。具体的な例では、サーバー204によって4つのディスプレイドライバーをインスタンス化することができ、各ドライバーが解像度1280×1024ピクセルを有することができる。この例では、リモートディスプレイサブシステム254は、5120×1024ピクセルの形状を有する境界ボックスを生成することができる。リモートディスプレイサブシステム254は、アイコンなどの位置を各ディスプレイドライバーに固有の座標から境界ボックスの座標に変換し、その形状をトランスポートロジック210を介してクライアント201に送るように追加的に構成できる。この例では、クライアント201は、形状から境界ボックスを生成するように構成できる。具体的な例を続けると、クライアントサブシステム306は、信号を受信して、ディスプレイドライバーにサイズ5120×1024ピクセルの仮想デスクトップ302をメモリ内に生成するように指示するように構成できる。この例では、クライアントサブシステム306は、次に、ディスプレイドライバーを、ビットマップ内にグラフィックスを境界ボックス内の位置に対して相対的に描画するように構成できる。別の具体的な例では、リモートディスプレイサブシステム254は、サーバー204にアタッチされたディスプレイドライバーが2048×1536ピクセルというディスプレイ解像度を出力するように構成されることを決定するように構成できる。この例では、リモートディスプレイサブシステム254は、ディスプレイ解像度を表す形状情報をトランスポートロジック210を介してクライアント201に送信するように構成できる。この具体的な例では、クライアントサブシステム306は、信号を受信して、サイズ2048×1536ピクセルの仮想デスクトップ302をメモリ内に生成するように構成でき、クライアントサブシステム306はディスプレイドライバーを、ビットマップ内にグラフィックスを境界ボックス内の位置に対して相対的に描画するように構成できる。
図4の説明を続けると、動作404は、リモートコンピューターから受信されたグラフィックスを仮想デスクトップに描画するステップを示している。例えば、前の例を続けると、クライアントサブシステム306は、リモートディスプレイサブシステム254から信号、例えば、描画コマンドを表す1つまたは複数のパケットを受信するように構成できる。コマンドはクライアントサブシステム306によって処理することができ、クライアント201のディスプレイドライバーは、仮想デスクトップ302にイメージを描画するように構成できる。具体的な例では、サーバー204に関して複数のアイコンと各アイコンの位置情報とでデスクトップ環境を定義する信号がサーバー204から受信できる。クライアントサブシステム306はその情報を処理して、ディスプレイドライバーに、境界ボックスに対して相対的にデスクトップおよびアイコンを描画するように指示する。
図4の説明を続けると、動作406は、仮想デスクトップのビューをレンダリングするステップであって、ビューはエッジによって画定され、仮想デスクトップの一部分を示すステップを示している。動作手順例の説明を続けると、グラフィックスがサーバー204から受信されて、仮想デスクトップ302に描画された後、クライアントサブシステム306のディスプレイドライバーは、仮想デスクトップ302のビュー304をレンダリングするように構成できる。例えば、本開示の一実施形態では、メモリには仮想デスクトップ302の全体が描画できるが、ディスプレイドライバーは、グラフィックスのサブセットが仮想デスクトップ302の現行ビュー内にあるかどうかに基づいて、クライアント201にアタッチされたディスプレイにそのサブセットのみをレンダリングすることができる。本開示の一実施形態では、クライアント201のディスプレイドライバーは、仮想デスクトップ302のディスプレイ解像度より小さい固有のディスプレイ解像度を有することができる。例えば、仮想デスクトップ302のサイズが2048×1536ピクセルの時、クライアント201のディスプレイドライバーは、800×600ピクセルのディスプレイ解像度を提供できるだけである。この例では、クライアントサブシステム306は、ビュー304のディスプレイ解像度を定義する情報および仮想デスクトップ302に対して相対的なビューの座標を受信して、ディスプレイドライバーを、示されたイメージをビュー304の寸法内にレンダリングするように構成するように構成できる。
図4の説明を続けると、動作408は、相対的カーソル移動情報を受信するステップを示している。例えば、前の例に加えて、スクロールサブシステム308は、クライアント201のオペレーティングシステム312から相対的マウス移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム312は、ビュー304内のカーソル310の移動、例えば、ビットマップを追跡するように構成できる。カーソル310は、一部の実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム312がカーソル310の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム308は、例えば、物理的入力デバイス、例えば、タッチパッドまたはマウスが移動した方向を識別する入力メッセージを所定の事例の発生時に受信するように構成できる。例えば、一実施形態では、クライアント201のオペレーティングシステム312は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には(+1、+1)などの情報を含むことができる。代替的実施形態では、スクロールサブシステム308は、仮想デスクトップ302に対して相対的なカーソル310の座標を識別する絶対カーソル移動情報を追跡するように構成できる。この例では、スクロールサブシステム308は、位置情報から計算するように構成できる。
図4の説明を続けると、動作410は、相対的カーソル移動情報およびビューのエッジから、カーソルがビューのエッジに到達したことを判定するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、仮想デスクトップ302に対して相対的なビュー304のピクセル範囲を識別する情報およびカーソル310の現在の位置を受信するように構成できる。スクロールサブシステム308は、例えば、絶対マウス移動情報および/または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム308は、マウス移動メッセージが受信されるたびに、仮想デスクトップ302に対して相対的なカーソル310の位置を判定し、その位置を、仮想デスクトップ302に対して相対的にビュー304を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ302に対して相対的なカーソル310のx座標およびy座標を、仮想デスクトップ302に対して相対的にビュー304のエッジを画定するx座標およびy座標と比較することにより、カーソル310がビュー304のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム308は、仮想デスクトップ内のカーソル310の座標、例えば、ピクセル400×300、および仮想デスクトップのビューを画定するピクセル、例えば、x軸上のピクセル0から800およびy軸上のピクセル0から600を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル310は、例えば、ビュー304を横切って左から右へ移動することができる。スクロールサブシステム308は、カーソル310のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、x軸のピクセル800に到達したかを検査することができる。スクロールサブシステム308が、x軸のエッジに到達したと判定した場合、例えば、カーソル310がピクセルポイント800×300に位置していると判定した場合、スクロールサブシステム308は、メッセージをクライアントサブシステム306に送るように構成できる。
図4の説明を続けると、動作412は、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするステップを示している。例えば、前の例に加えて、スクロールサブシステム308が、ビュー304のエッジに到達したと判定した場合、スクロールサブシステム308は、ビュー304を相対的マウス移動の方向にパンするための信号をクライアントサブシステム306に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム308は、カーソル310がビュー304の右エッジに位置していた時にマウスがx方向に+1だけ移動したことを示す信号を受信することがある。スクロールサブシステム308は、ビューをx軸上で+1ピクセルだけパンするためのメッセージをクライアントサブシステム306に送るように構成できる。この例では、カーソル310は、x方向にもう1回+xピクセルだけ移動することができ、スクロールサブシステム308は、カーソル310が新しいエッジ上にあると判定することができる。したがって、マウスが再び右に移動した場合、スクロールサブシステム308は、ビュー304を再びパンするための信号をクライアントサブシステム306に送るように構成できる。
ここで図5〜図7を参照すると、それらは、図4の動作手順400の代替的実施形態を示している。図5は、図4の動作手順400に動作手順514および動作手順516ならびに詳細518を追加した、図4の代替的実施形態を示している。動作514を参照すると、それは、線形加速因数を相対的カーソル移動情報に適用するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、相対的カーソル移動情報を受信し、その相対的カーソル移動情報にスケール値を掛け、ビュー304をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム306に送信するように構成できる。例えば、一実施形態例では、ビュー304を相対的マウス移動に等しい量より多い数のピクセルだけパンすることが望ましいことがある。例えば、クライアント201がタッチパッドを含む実施形態例では、ユーザーは、仮想デスクトップ302の一方のサイドから他方のサイドへビュー304を移動させるために、タッチパッドを横切って指を不合理な回数スクロールしなければならないことがある。そのため、一実施形態では、スクロールサブシステム308は、相対的移動情報に固定値を掛けて、クライアントサブシステム306に、ビュー304をスケール化量だけ移動させるように指示するように構成できる。具体的な例では、スクロールサブシステム308は、カーソル位置が、ビュー304の右エッジを画定するピクセル上にあることを判定するように構成できる。この例では、ユーザーがマウスをx方向に+1だけ移動させると、スクロールサブシステム308は、ピクセル移動に50などの固定数を掛けて、ビュー304をx方向に+50ピクセルだけ移動(パン)するためのメッセージをクライアントサブシステム306に送ることができる。
図5の説明を続けると、それは、カーソルの速さを決定するステップと、動的加速因数を生成するステップであって、動的加速因数はカーソルの速さの関数であるステップと、動的加速因数を相対的カーソル移動情報に適用するステップとを示した動作516を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、相対的カーソル移動情報を受信して、その相対的カーソル移動情報に動的スケール値を掛けて、ビュー304をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム306に送信するように構成できる。例えば、一実施形態では、カーソル310がビュー304を横切って素早く移動する場合、ビュー304を多数のピクセルだけパンすることが望ましいことがある。例えば、ユーザーがカーソル310をビュー304を横切って移動させる場合、ユーザーは仮想デスクトップ302の遠端の何かを操作することに関心があることが推察できる。この例では、スクロールサブシステム308は、ユーザーの意図がビュー304を多数のピクセルだけパンすることであることを推察するように構成できる。この状況では、スクロールサブシステム308は、カーソル310がビュー304を横切って移動する間、カーソル310の速さに依存するスケール値を生成するように構成できる。例えば、スクロールサブシステム308は、最後の64個のサンプル全体にわたってカーソル310の座標を追跡するように構成できる。サンプリング率は固定であってよく、スクロールサブシステム308は、カーソル310の平均の速さを判定するように構成できる。この例では、スクロールサブシステム308は、カーソル310の平均の速さに基づいてスケール値を大きくし、クライアントサブシステム306に、ビュー304をスケール化量だけパンするように指示するように構成できる。具体的な例では、スケール値は速さと共に急激に増加することができる。そのため、カーソル310がビュー304内を移動する速さが速ければ速いほど、ビュー304は、クライアントサブシステム306によって、より多くスクロールされることになる。具体的な実施形態では、カーソル310は、ビュー304を横切って左から右へ移動することができる。この具体的な例では、スクロールサブシステム308は、カーソル310の座標はx方向に+10でサンプルを変更していること示す多数のメッセージを受信することができる。この具体的な例では、スクロールサブシステム308は、e^10を取ることにより動的加速因数を決定し、クライアントサブシステム306に、ビュー304をx方向に22,026個のピクセルだけ移動させるように指示するように構成できる。同じ実施形態または他の実施形態では、スクロールサブシステム308は、403などの最大の動的な値を設定するように構成できて、そのため、この状況では、クライアントサブシステム306は、何千個のピクセルをスクロールすることによってビュー304を大量に変更することはできない。
代替的実施形態では、スクロールサブシステム308は、カーソル310の速さを決定し、スクロールサブシステム308がビュー304のエッジと見なすピクセル範囲を変更するように構成できる。この例では、スクロールサブシステム308は、カーソル310の速さを検出し、カーソルの速さが増すにつれて縮小するビュー304の中のエッジとして作用する境界ボックスを生成することができる。例えば、800×600ピクセルを含むビュー304では、ビュー304のエッジは、x方向ではピクセル0および800になり得て、y方向ではピクセル0から600になり得る。カーソル310の速さが+1と検出されると、スクロールサブシステム308はエッジを同じにしておくことができる。しかし、速さがx方向に+10と検出されると、スクロールサブシステム308は、エッジをx方向ではピクセル0および720、y方向ではピクセル0から540であるように構成できる。ビュー304のサイズはこの例では800×600のままであるが、スクロール動作は、ビュー304の物理的エッジに到達する前に発生するように構成できる。この例では、カーソル310が素早く移動する場合、クライアントサブシステム306はディスプレイドライバーを、カーソル310がビュー304の物理的エッジに到達する前にビューをパンするように構成できる。この代替的実施態様は、クライアントサブシステム306をビュー304をより速くパンするように構成するために他の加速手法と合わせて使用することができる。
図5の説明を続けると、それは、動作402の詳細を追加的に示している。詳細518は、リモートコンピューターから受信された形状情報から仮想デスクトップを生成するステップであって、形状情報は境界ボックス、およびリモートコンピューターのディスプレイレイアウトを画定する情報を含み、さらに境界ボックスのディスプレイ解像度はリモートコンピューターの第1のディスプレイドライバーおよび第2のディスプレイドライバーからのディスプレイ解像度情報から計算されるステップを示している。例えば、本開示の一実施形態では、サーバー204のリモートディスプレイサブシステム254は、第1のディスプレイドライバーおよび第2のディスプレイドライバーに関連付けられたピクセル範囲の合計に等しいピクセル範囲を画定する境界ボックスを生成するように構成できる。これらの実施形態例では、リモートディスプレイサブシステム254は、例えば、第2のディスプレイドライバーの座標を境界ボックスに再マップするように構成できる。例えば、800×600というピクセル範囲を有する第2のディスプレイ上のピクセル(0、0)は、第1のディスプレイドライバーが1280×1024というディスプレイ解像度を有している場合、ピクセル(1280、0)に再マップできる。リモートディスプレイサブシステム254は、この例では、各ディスプレイドライバーのピクセルの合計を含む境界ボックスをサーバー204上のディスプレイドライバーの論理的レイアウトに従って生成するように構成できる。例えば、第1のディスプレイドライバーが第2のディスプレイドライバーの左方にイメージを論理的にレンダリングするように構成されている場合、リモートディスプレイサブシステム254によって生成される境界ボックスは、2080×1024ピクセルの解像度を有することができる。別の例では、第1のディスプレイドライバーが第2のディスプレイドライバーの上方にイメージを論理的にレンダリングするように構成されている場合、リモートディスプレイサブシステム254によって生成される境界ボックスは、1280×1624ピクセルといった寸法を有することができる。これらの状況では、リモートディスプレイサブシステム254は、寸法を表す信号をトランスポートロジック210を介してクライアント201に送信するように構成できる。この例では、クライアントサブシステム306は、境界ボックスのピクセル範囲を含む仮想デスクトップ302を生成するように構成できる。境界ボックスのピクセル範囲を送信することに加えて、リモートディスプレイサブシステム254は、サーバー204のディスプレイドライバーのレイアウトを送信するように追加的に構成できる。例えば、1280×1024というディスプレイ解像度を有するディスプレイドライバーが800×600というピクセル範囲を有する第2のディスプレイドライバーの左方に論理的に配置されている場合、仮想デスクトップは、同じレイアウトを含むように構成できる。例えば、第2のディスプレイドライバーのピクセルは、境界ボックスのピクセル(1280、0)から始まるように再マップできる。他方、1280×1024というディスプレイ解像度を有するディスプレイドライバーが800×600というピクセル範囲を有する第2のディスプレイドライバーの右方に論理的に配置されている場合、第1のディスプレイドライバーのピクセルは、境界ボックスのピクセル(800、0)から始まるように再マップできる。
図6を参照すると、それは、追加動作620を含む図5の動作手順400の代替的実施形態を示している。動作620については、それは、リモートデバイスの第1のディスプレイドライバーおよび第2のディスプレイドライバー用のディスプレイ解像度情報を受信するステップと、そのディスプレイ解像度情報から第1のディスプレイドライバーおよび第2のディスプレイドライバー用のエッジを決定するステップとを示している。例えば、本開示の一実施形態では、サーバー204のリモートディスプレイサブシステム254は、第1のディスプレイドライバーおよび第2のディスプレイドライバーに関連付けられたピクセル範囲の合計に等しいピクセル範囲を含む境界ボックスを生成するように構成できる。境界ボックスをクライアント201に送信することに加えて、リモートディスプレイサブシステム254は、各ディスプレイドライバー用の形状を表す信号をトランスポートロジック210を介してクライアント201に送信するように構成できる。この実施形態例では、クライアントサブシステム306は、各ディスプレイドライバー用の形状を表す1つまたは複数のパケットを受信し、ディスプレイドライバーのエッジに関連付けられた、仮想デスクトップ302内のピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム306は、この情報をスクロールサブシステム308に伝達するように構成できる。
図7を参照すると、それは、追加の動作722および動作724を含む図6の動作手順400の代替的実施形態を示している。動作722については、それは、ビューを画定するエッジおよび第1のディスプレイドライバーおよび第2のディスプレイドライバーを画定するエッジから、ビューのエッジが第1のディスプレイドライバーのエッジに到達したことを判定する副動作と、カーソルの速さが所定の値より大きいことを判定する副動作と、仮想デスクトップのビューを第2のディスプレイドライバーに関連付けられた遠方エッジまでスクロールする副動作とを示している。例えば、本開示の一実施形態における前の例に加えて、スクロールサブシステム308は、ビュー304を、第2のディスプレイのピクセルに関連付けられた遠方エッジまでパンするように構成できる。実施態様の一例では、スクロールサブシステム308は、ビュー304のエッジが、第1のディスプレイに関連付けられたエッジに到達し、カーソル310が所定の速さで移動している時にこのジャンプ動作を実行するように構成できる。例えば、スクロールサブシステム308は、この実施形態例では、仮想デスクトップ302に対して相対的なビュー304のエッジ、サーバー204のディスプレイドライバーのエッジを画定する、仮想デスクトップ302に対して相対的なピクセル値、およびカーソル310の速さを識別する情報を受信するように構成できる。この実施形態例では、スクロールサブシステム308は、ビュー304のエッジがリモートディスプレイドライバーのエッジに重なった時を検出するように構成できる。スクロールサブシステム308が、エッジに到達したこと、例えば、ビュー304のエッジがピクセル1280にあり、第1の例のディスプレイドライバーの解像度はピクセル1280で終わることを判定する場合、スクロールサブシステム308は、カーソル310の速さを判定するように構成できる。カーソル310の速さが所定のしきい値、例えば、サンプルごとに+15ピクセルより大きい場合、スクロールサブシステム308は、ユーザーは画面全体をジャンプしたがっていると判定し、ビュー304をサーバー204のリモートディスプレイドライバーに関連付けられた遠方エッジ、例えば、仮想デスクトップ302のピクセル1624まで移動させるための信号をクライアントサブシステム306に送るように構成できる。一実施形態では、この動作は、ユーザーが、様々なディスプレイに関連付けられたピクセル範囲でアプリケーションのウィンドウサイズを最大化した場合に望ましい可能性がある。ユーザーがディスプレイ間で後方または前方にジャンプしたい場合、ユーザーは特定のスピードでマウスを移動させることができ、スクロールサブシステム308は、仮想デスクトップのビュー304をディスプレイ全体にわたって「バンプ」することができる。
代替的実施形態では、仮想デスクトップ302の遠方エッジにジャンプするのではなく、ビュー304は、ビュー304のディスプレイ解像度に等しいピクセル範囲をジャンプするように構成できる。例えば、スクロールサブシステム308は、この実施形態例では、仮想デスクトップ302に対して相対的なビュー304のエッジおよびカーソル310の速さを識別する情報を受信するように構成できる。この実施形態例では、スクロールサブシステム308は、カーソル310がビュー304の特定のエッジに到達した時を検出するように構成できる。スクロールサブシステム308が、特定のエッジに到達し、カーソル310の速さが所定のしきい値、例えば、サンプルごとに+15ピクセルより大きいと判定した場合、スクロールサブシステム308は、ユーザーはビュー304をジャンプしたがっていると判定し、ビューの右エッジを右へ800ピクセルだけ移動させるための信号をクライアントサブシステム306に送るように構成できる。
図7の説明を続けると、動作724は、カーソルの座標情報ならびに第1のディスプレイドライバーおよび第2のディスプレイドライバーを画定するエッジの座標情報から、カーソルが第1のディスプレイドライバーのエッジに到達したことを判定するステップと、触覚応答を生成するステップとを示している。例えば、本開示の一実施形態における前の例に加えて、スクロールサブシステム308は、触覚応答を生成するように、例えば、クライアント201または周辺機器のコンポーネントによって処理された時、振動を生成する信号を生成するように構成できる。例えば、マウスまたはタッチパッドは、スクロールサブシステム308から受信された電気信号に応答してマス(mass)を回転するモーターを含むように構成できる。この例では、マスを回転すると、マウスのケースまたはラップトップがランブル音を出す。この例では、スクロールサブシステム308は、ビュー304の位置を識別する情報、例えば、カーソル310の位置を画定する、仮想デスクトップ302に対して相対的なピクセル値、およびサーバー204のディスプレイドライバーのエッジを画定する、仮想デスクトップ302に対して相対的なピクセル値を受信するように構成できる。この実施形態例では、スクロールサブシステム308は、カーソル310の位置がリモートディスプレイドライバーのエッジに重なった時を検出するように構成できる。スクロールサブシステム308が、エッジに到達したこと、例えば、2つのディスプレイドライバーが1280×1024および800×600である実施形態でカーソル310の位置がピクセル1280上であることを判定した場合、スクロールサブシステム308は、触覚サブシステムにユーザー入力デバイスを振動させるように指示する信号をマウスなどのユーザー入力デバイスに送るように構成できる。
ここで図8を参照すると、動作800から動作808を含む、本開示の態様を実行するためのフローチャートの例が示されている。本開示の一実施形態では、図8の動作手順の例は、コンピューター読み取り可能なストレージ媒体に保管されたコンピューター読み取り可能な命令の形で実施できる。コンピューター読み取り可能な命令はクライアント201のプロセッサによって処理することができ、そのプロセッサが動作手順を実行する。ここで図8を参照すると、動作例800は動作手順を開始し、動作802は、リモートコンピューターから受信されたグラフィックスを示す仮想デスクトップのビューをレンダリングするステップであって、ビューはピクセルの範囲によって画定され、仮想デスクトップはリモートコンピューターのディスプレイ解像度に対応するピクセルの範囲によって画定されるステップを示している。例えば、クライアントサブシステム306は、ディスプレイドライバーに仮想デスクトップ302をクライアント201のメモリ内に生成し、サーバー204から受信されたグラフィックスを仮想デスクトップ302に描画するように指示するように構成できる。この実施形態例では、クライアント201のディスプレイドライバーは、ピクセル範囲、例えば、800×600によって画定される仮想デスクトップ302のビュー304をレンダリングするように構成できる。例えば、本開示の一実施形態では、メモリにはディスプレイドライバーによって仮想デスクトップ302の全体が描画されるが、ディスプレイドライバーは、グラフィックスのサブセットが仮想デスクトップ302の現在のビュー内にあるかどうかに基づいて、クライアント201にアタッチされたディスプレイにそのサブセットのみをレンダリングすることができる。一実施形態では、クライアント201のディスプレイドライバーは、仮想デスクトップ302のディスプレイ解像度より小さい固有のディスプレイ解像度を有することができる。例えば、仮想デスクトップ302のサイズが2048×1536ピクセルの時、クライアント201のディスプレイドライバーは、800×600ピクセルのディスプレイ解像度を提供できるだけである。この例では、クライアントサブシステム306は、ビュー304のディスプレイ解像度を定義する情報および仮想デスクトップ302に対して相対的なビューの座標を受信して、ディスプレイドライバーを、示されたイメージをビュー304の寸法内にレンダリングするように構成するように構成できる。
図8の説明を続けると、それは、相対的カーソル移動情報を受信するステップを例示した動作804を追加的に示している。例えば、前の例に加えて、スクロールサブシステム308は、クライアント201のオペレーティングシステム312から相対的マウス移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム312は、ビュー304内のカーソル310の移動、例えば、ビットマップを追跡するように構成できる。カーソル310は、一部の実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム312がカーソル310の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム308は、例えば、物理的入力デバイス、例えば、タッチパッドまたはマウスが移動した方向を識別する入力メッセージを所定の事例の発生時に受信するように構成できる。例えば、一実施形態では、クライアント201のオペレーティングシステム312は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には(+1、+1)などの情報を含むことができる。代替的実施形態では、スクロールサブシステム308は、カーソル310の座標を識別する絶対カーソル移動情報を追跡し、仮想デスクトップ302に対して相対的なカーソルの移動を計算するように構成できる。
図8の説明を続けると、それは、相対的カーソル移動情報、およびビューを画定するピクセルの範囲から、カーソルがビューのエッジに到達したことを判定するステップを例示した動作806を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、仮想デスクトップ302に対して相対的なビュー304のピクセル範囲を識別する情報およびカーソル310の現在の位置を受信するように構成できる。スクロールサブシステム308は、例えば、絶対マウス移動情報および/または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム308は、マウス移動メッセージが受信されるたびに、仮想デスクトップ302に対して相対的なカーソル310の位置を判定し、その位置を、仮想デスクトップ302に対して相対的にビュー304を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ302に対して相対的なカーソル310のx座標およびy座標を、仮想デスクトップ302に対して相対的にビュー304のエッジを画定するx座標およびy座標と比較することにより、カーソル310がビュー304のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム308は、仮想デスクトップ内のカーソル310の座標、例えば、ピクセル400×300、および仮想デスクトップのビューを画定するピクセル、例えば、x軸上のピクセル0から800およびy軸上のピクセル0から600を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル310は、例えば、ビュー304を横切って左から右へ移動することができる。スクロールサブシステム308は、カーソル310のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、x軸のピクセル800に到達したかを検査することができる。スクロールサブシステム308が、x軸のエッジに到達したと判定した場合、例えば、カーソル310がピクセルポイント800×300に位置していると判定した場合、スクロールサブシステム308は、メッセージをクライアントサブシステム306に送るように構成できる。
図8の説明を続けると、それは、仮想デスクトップのビューを相対的カーソル移動の方向にスクロールするステップを例示した動作808を追加的に示している。例えば、前の例に加えて、スクロールサブシステム308が、ビュー304のエッジに到達したと判定した場合、スクロールサブシステム308は、ビュー304を相対的マウス移動の方向にパンするための信号をクライアントサブシステム306に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム308は、カーソル310がビュー304の右エッジに位置していた時にマウスがx方向に+1だけ移動したことを示す信号を受信することがある。スクロールサブシステム308は、ビューをx軸上で+1ピクセルだけパンするためのメッセージをクライアントサブシステム306に送るように構成できる。この例では、カーソル310は、x方向にもう1回+1ピクセルだけ移動することができ、スクロールサブシステム308は、カーソル310が新しいエッジ上にあると判定することができる。したがって、マウスが再び右に移動した場合、スクロールサブシステム308は、ビュー304を再びパンするための信号をクライアントサブシステム306に送るように構成できる。
ここで図9から図11を参照すると、それらは、図8の動作手順の代替的実施形態を示している。図9を参照すると、それは、追加の動作手順910および動作手順912を含む、図8の動作手順800を示している。動作910は、仮想デスクトップを複数のゾーンに分割するステップと、各ゾーンをキーボードのキーに割り当てるステップと、特定のゾーンに割り当てられたキーの選択を受信するステップと、キーの選択に応答してビューを特定のゾーンにセンタリングするステップとを示している。例えば、本開示の一実施形態では、サーバー204のリモートディスプレイサブシステム254は、仮想デスクトップの形状を画定する信号を生成するように構成でき、サーバー204は、形状情報を表す信号をクライアント201に送信するように構成できる。この実施形態例では、クライアントサブシステム306は、仮想デスクトップ302をメモリ内に生成し、形状を表す信号をスクロールサブシステム308に送信するように構成できる。この実施形態例では、スクロールサブシステム308は、仮想デスクトップ302を、各ゾーンにピクセルの範囲を割り当てることができる複数のゾーンに分割するように構成できる。仮想デスクトップが複数のゾーンに分割されると、ゾーンの識別子をテーブルに保管できて、キーボード上のキーに関連付けることができる。例えば、仮想デスクトップ302が4つのゾーンに分割された場合、キー「9」、「7」、「1」および「3」を使用して仮想デスクトップ302の4つの四分区間に対応付けることができる。この例では、例えば、コントロールキーが押し下げられたまま、スクロールサブシステム308が「9」、「7」、「1」および「3」を含む通知を受信すると、スクロールサブシステム308は、選択されたゾーンの中心を画定するピクセル上にビュー304をセンタリングするようにクライアントサブシステム306に指示する信号をクライアントサブシステム306に送るように構成できる。
図9の説明を続けると、動作912は、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのスケール化イメージおよびビューのスケール化イメージを示すステップを示している。例えば、本開示の一実施形態では、クライアントサブシステム306は、仮想デスクトップ302の、ビュー304がレンダリングしている一部分を図示するために仮想デスクトップ302およびビュー304のスケール化イメージを示すミニマップ316を生成するように構成できる。例えば、ミニマップ316を含む実施形態では、クライアントサブシステム306は、仮想デスクトップ302を画定するピクセルの範囲、および仮想デスクトップ302に対して相対的にビュー304を画定するピクセルの範囲を受信するように構成できる。この実施形態例では、クライアントサブシステム306は、ビュー304および仮想デスクトップ302両方のピクセル範囲を分割し、仮想デスクトップ302内のビュー304の中心のピクセル座標に対応する、スケール化ビューの中心を決定することによりミニマップ316を生成するように構成できる。この実施形態例では、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、ビュー304の位置を表示するミニマップ316をビュー304の一部分全体にレンダリングするように構成できる。この実施形態例では、ビュー304がスクロールされるにつれて、ビュー304を画定するピクセルの範囲が更新できて、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、ビュー304が変化したことを反映する、更新されたミニマップ316をレンダリングするように構成することができる。
本開示の別の実施形態では、ミニマップ316は、スケール化ビューおよびスケール化仮想デスクトップ302に加えて、サーバー204から受信されたスケール化イメージをレンダリングするように構成できる。例えば、各ウィンドウ、および/またはサーバー204から受信されたアイコン描画コマンドは、仮想ディスプレイ302内のピクセル位置に関連付けることができる。この実施形態例では、クライアントサブシステム306は、ウィンドウおよび/またはアイコンをスケールし、スケール化仮想デスクトップ302内のスケール化ウィンドウおよび/またはスケール化アイコンのピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、スケール化アイコンおよび/またはスケール化ウィンドウをビュー304の一部分全体にレンダリングするように構成できる。
ここで図10を参照すると、それは、動作手順の詳細1014および追加の動作手順1016を含む、図9の動作手順800の代替的実施形態を示している。詳細1014を参照すると、それは、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのワイヤフレームイメージおよびビューのワイヤフレームアウトラインを含むステップを示している。例えば、本開示の一実施形態では、ミニマップ316は、ビューおよび仮想デスクトップの塗りつぶしイメージまたは半透明イメージをビュー304全体にレンダリングすることができるが、一実施形態では、計算能力を維持するために、クライアントサブシステム306は、ビュー304および仮想デスクトップ302のワイヤフレームを生成するように構成できる。例えば、ワイヤフレームは、一実施形態では、ピクセルの範囲によって画定されるビューおよび仮想デスクトップのエッジを識別することにより作成されるビジュアルプリゼンテーションを含むことができる。
図10の説明を続けると、動作1016は、ユーザー入力をリモートコンピューターに送信するステップであって、リモートコンピューターはユーザー入力に応答してプログラムを実行するように構成されているステップと、そのプログラム用のユーザーインターフェイスを表すグラフィックスを受信するステップと、そのプログラム用のユーザーインターフェイスのスケール化イメージでミニマップを更新するステップとを示している。例えば、本開示の一実施形態では、クライアント201のネットワークアダプターは、仮想デスクトップ302およびマウスのダブルクリックなどのユーザー入力に関してカーソル310の座標を表す1つまたは複数のパケットを送信するように構成できる。この例では、図2を参照すると、ユーザー入力は、セッションに関連付けられ、入力サブシステム252に転送されるスタックインスタンスによって受信することができる。入力サブシステム252は、カーソル310のホットスポットの座標がプログラムのアイコンが配置されている場所にあることを判定することができる。セッションコア244は、識別されたプログラムへのハンドルを含む信号を実行時サブシステム240に送ることができる。実行時サブシステム240は、プログラム用の1つまたは複数のスレッドをインスタンス化できるプロセスを実行することができる。スレッドは、サーバーオペレーティングシステム214のカーネル214によって、サーバー204のプロセッサによって処理されるようにスケジュールすることができ、プログラムを表すユーザーインターフェイスがGDI246によって生成できる。この例では、リモートディスプレイサブシステム254は、ユーザーインターフェイスを表す描画コマンドを受信し、それらのコマンドをそのセッション用のスタックインスタンスに経路指定するように構成できる。トランスポートロジック210は、次に、パケットをクライアント201に送信できる。ここで図3を参照すると、クライアントサブシステム306がパケットを受信すると、クライアントサブシステム306は、ユーザーインターフェイスの座標を識別し、ユーザーインターフェイスを仮想デスクトップ302に描画するように構成できる。この例では、クライアントサブシステム306は、仮想デスクトップ302を画定するピクセルの範囲と、仮想デスクトップ302に対して相対的にビューを画定するピクセルの範囲と、プログラム用のユーザーインターフェイスを画定するピクセルの範囲とを受信するように構成できる。この実施形態例では、クライアントサブシステム306は、仮想デスクトップおよびプログラム用のスケール化ユーザーインターフェイス用のピクセル範囲を分割することによりミニマップ316を生成し、プログラム用のスケール化ユーザーインターフェイス用の中心を決定するように構成できる。この実施形態例では、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、ビュー304の、プログラム用のスケール化ユーザーインターフェイスを含む一部分、または、例えば、プログラム用のスケール化ユーザーインターフェイスのワイヤフレーム全体にミニマップ316をレンダリングするように構成できる。別の実施形態では、クライアントサブシステム306は、仮想デスクトップ302のどこにスケール化ユーザーインターフェイスがレンダリングされたかをユーザーが素早く識別できるようにするために、スケール化ユーザーインターフェイスのカラーを、所定の時間、変更するように構成できる。
ここで図11を参照すると、それは、仮想デスクトップ上のユーザーインターフェイスの位置を示す座標を受信するステップと、ユーザー入力を受信するステップと、ユーザー入力に応答してビューをユーザーインターフェイスにセンタリングするステップとを示す動作手順1118を含む、図10の動作手順800の代替的実施形態を示している。例えば、一実施形態では、新しいウィンドウまたはプログラム用のユーザーインターフェイスがクライアントサブシステム306によって描画される時、そのウィンドウまたはユーザーインターフェイスの座標を識別する通知をスクロールサブシステム308に送ることができる。この実施形態では、座標を表すハンドルがテーブルに保管できて、キーまたはマウスボタンなどのユーザー入力はそのハンドルに関連付けることができる。この実施形態例では、スクロールサブシステム308は、ユーザー入力に関連した通知を受信し、受信されたユーザー入力から、ハンドルに関連付けられたキーまたはマウスボタンが選択されたかを判定するように構成できる。それが選択された場合、スクロールサブシステム308は、クライアントサブシステム306に、新しいウィンドウまたはプログラム用のユーザーインターフェイスの座標上にビュー304をセンタリングするように指示する信号を送ることができる。この例では、クライアントサブシステム306はこのメッセージを受信し、ディスプレイドライバーに、ビュー304をセンタリングするように指示することができる。
ここで図12を参照すると、それは、本開示の態様を実行するための、動作1200、動作1202、動作1204および動作1206を含むフローチャートの例を示している。本開示の一実施形態では、コンピューターシステムは、回路、例えば、図12の動作手順を達成するように構成されたハードウェアおよびソフトウェアの組み合わせを含むことができる。ここで図3と並行して図12を参照すると、動作1200は動作手順を開始し、動作1202は、仮想デスクトップのビューをレンダリングするステップであって、仮想デスクトップは、リモートコンピューターのディスプレイ解像度に対応する第1のピクセル範囲によって画定され、ビューは第2のピクセル範囲によって画定されるステップを示している。例えば、本開示の一実施形態では、クライアント201は、カーネル314を有するオペレーティングシステム312を含むように構成できる。カーネル314は、クライアント201のハードウェアを管理し、プロセッサ上で実行するスレッドをスケジュールするように構成できる。オペレーティングシステム312は、ユーザーモードおよびカーネルモード、例えば、アプリケーションが実行されて、かつ限られた数の権利を有する非特権プロセッサモード、およびすべてのメモリ命令およびCPU命令が発行できるプロセッサでのコード実行の特権モードを含むように構成できる。カーネル314は、この例では、サーバー204から描画コマンドを受信し、ディスプレイドライバーに、メモリに保管された仮想デスクトップ302にそれらを描画するように指示することにより、リモートデスクトップ環境を達成する1つまたは複数のプロセスを含むことができるクライアントサブシステム306とインターフェイス接続できる。上述と同様に、仮想デスクトップ302はクライアントサブシステム306によって生成することができ、仮想デスクトップ302のピクセルの範囲は、サーバー204のディスプレイドライバーのディスプレイ解像度に対応することができる。例えば、この実施形態では、サーバー204は、1280×1024というディスプレイ解像度を生成するように構成されるディスプレイドライバーを含むことができる。この例では、仮想デスクトップ302は、1280×1024というディスプレイ解像度を含むように生成できる。別の実施形態では、サーバー204は、それぞれが1280×1024というディスプレイ解像度を生成する2つのディスプレイドライバーを含むことができる。この例では、仮想デスクトップ302は、2560×1024というディスプレイ解像度を含むように構成できる。サーバー204のディスプレイ解像度がクライアント201で同じに保たれる実施形態例では、クライアントサブシステム306は、高くつくサイズ変更動作および再マップ動作を実行せずにイメージをレンダリングすることができる。すなわち、仮想デスクトップ302の形状はサーバー204のディスプレイドライバーと同じなので、アイコンは、サーバー204上で座標(1000、900)に配置され、アイコンをサイズ変更および再マップせずにクライアント201の同じ座標に描画できる。
仮想デスクトップ302を描画することに加えて、クライアントサブシステム306は、ディスプレイドライバーに、仮想デスクトップ302のビュー304をレンダリングするように指示するように構成できる。この実施形態例では、ビュー304は第2のピクセル範囲によって画定でき、クライアント201のディスプレイドライバーは、仮想デスクトップ302のビュー表示された部分にイメージをレンダリングするように構成できる。この実施形態例では、ビュー304を画定するピクセル範囲は、仮想デスクトップ302を画定するピクセル範囲より小さくすることができる。例えば、一実施形態では、クライアント201は、1280×1024個のピクセルをレンダリングできる画面を有するラップトップコンピューターでよいが、サーバー204は、それぞれが1280×1024個のピクセルをレンダリングしている複数のモニタを有する(そのため、サーバー204は、基本的に5120×1024個のピクセルのリアルエステート(real estate)を有する)。別の例では、ビュー304は、クライアント201のデスクトップ上の調整可能なウィンドウであってよい。そのため、一実施形態では、サーバー204およびクライアントの両方が1280×1024というディスプレイ解像度を有することができるが、ビュー304はウィンドウ型なので、ビュー304は、現在、600×400個のピクセルを含むことができ、クライアント201は、残りのピクセルによってレンダリングされる別のプログラム用のユーザーインターフェイスを有することができる。
本開示の実施形態では、ビュー304を画定するピクセルの範囲は、仮想デスクトップ302を画定するピクセルの範囲にマップできる。例えば、クライアントサブシステム306は、ビュー304の現在のピクセル範囲を記載した情報を含むテーブルを含むように構成できる。具体的な例では、仮想デスクトップのビューが800×600というピクセル範囲を有し、ビュー304が仮想デスクトップ302の上部右端部分をレンダリングしている場合、そのテーブルは、ビュー304の現在のピクセル範囲がx軸のピクセル1280から480およびy軸の1024から424であることを記載する情報を含むことができる。別の移植では、テーブルは、ビュー(1280、1024)の上部右ピクセルなどの単一のポイントのみを含み、そのポイントをビュー304のディスプレイ解像度と共に使用して、エッジを画定するピクセルを計算する。
図12の説明を続けると、図12は、カーソル移動情報を受信するステップを示す動作1204を含む。例えば、前の例に加えて、スクロールサブシステム308は、本開示の一実施形態では、クライアント201のオペレーティングシステム312からカーソル移動情報を受信するように構成できる。例えば、一実施形態では、オペレーティングシステム312は、カーソル310の移動を追跡するように構成できる。カーソル310は、一実施形態では、ホットスポットと呼ばれる単一ピクセルポイント、例えば、オペレーティングシステム312がカーソル310の位置として追跡および認識するポイントを有することができる。この実施形態例では、スクロールサブシステム308は、仮想デスクトップ302に対して相対的なカーソル310の絶対位置を識別する入力メッセージを受信し、その位置をカーソル310の前の位置と比較して、カーソルが仮想デスクトップ302に対して相対的に移動した方向を判定するように構成できる。代替的実施形態では、入力メッセージは相対的マウス移動情報を含むことができる。例えば、一実施形態では、クライアント201のオペレーティングシステム312は、入力デバイス、例えば、マウスまたはタッチパッドが物理的に移動するたびに追跡するように構成できる。入力メッセージは、この例では、入力デバイスが上および右へ移動した場合には(+1、+1)などの情報を含むことができる。他の実施形態例では、スクロールサブシステム308は、絶対マウス移動情報および相対的マウス移動情報の両方を受信するように構成できる。
図12の説明を続けると、それは、カーソル移動情報および第2のピクセル範囲から、カーソルが第2のピクセル範囲のエッジに到達したことを判定するステップを示す動作1206を含む。例えば、本開示の一実施形態では、スクロールサブシステム308は、仮想デスクトップ302に対して相対的なビュー304のピクセル範囲を識別する情報およびカーソル310の現在の位置を受信するように構成できる。スクロールサブシステム308は、例えば、絶対マウス移動情報および/または相対的マウス移動情報を含むことができるメッセージを受信するように追加的に構成できる。次に、スクロールサブシステム308は、マウス移動メッセージが受信されるたびに、仮想デスクトップ302に対して相対的なカーソル310の位置を判定し、その位置を、仮想デスクトップ302に対して相対的にビュー304を画定するピクセル範囲と比較することにより、例えば、仮想デスクトップ302に対して相対的なカーソル310のx座標およびy座標を、仮想デスクトップ302に対して相対的にビュー304のエッジを画定するx座標およびy座標と比較することにより、カーソル310がビュー304のエッジに到達したかを判定することができる。具体的な例では、スクロールサブシステム308は、仮想デスクトップ内のカーソル310の座標、例えば、ピクセル400×300、および仮想デスクトップのビューを画定するピクセル、例えば、x軸上のピクセル0から800およびy軸上のピクセル0から600を含むテーブルを含むことができる。ユーザーがマウスを移動させるにつれて、カーソル310は、例えば、ビュー304を横切って左から右へ移動することができる。スクロールサブシステム308は、カーソル310のピクセル位置をインクリメントし、インクリメントごとに、ピクセルがエッジ、例えば、この例では、x軸のピクセル800に到達したかを検査することができる。スクロールサブシステム308が、x軸のエッジに到達したと判定した場合、例えば、カーソル310がピクセルポイント800×300に位置していると判定した場合、スクロールサブシステム308は、メッセージをクライアントサブシステム306に送るように構成できる。
図12の説明を続けると、それは、ビューをカーソル移動の方向にスクロールするステップを示す動作1206を含む。例えば、前の例に加えて、スクロールサブシステム308が、ビュー304のエッジに到達したと判定した場合、スクロールサブシステム308は、ビュー304をマウス移動の方向にパンするための信号をクライアントサブシステム306に送るように構成できる。例えば、具体的な実施形態では、スクロールサブシステム308は、マウスがx軸を(−10、0)移動したことを示す信号を受信することがある。スクロールサブシステム308は、カーソル310の位置を変更して、その位置を、ビュー304のエッジを画定するピクセルと比較するように構成できる。この例では、ビュー304の左エッジに到達することができ、スクロールサブシステム308は、クライアントサブシステム306に仮想デスクトップ302のビュー304を移動させるように指示するメッセージをクライアントサブシステム306に送るように構成できる。具体的な例では、ビュー304は、800×600ピクセルという解像度を含むことができ、仮想デスクトップ302の上部右端部分を示すことができる。クライアントサブシステム306は、この例では、ビューを画定する座標、例えば、x軸の1280から480およびy軸の1024から424を保管するテーブルを含むことができる。この実施形態例では、スクロールサブシステム308がビュー304は(−10、0)移動されるべきであると判定した場合、クライアントサブシステム306は、ディスプレイドライバーに、x軸のピクセル範囲1270から470およびy軸の1024から424をレンダリングするように指示するように構成できる。
ここで図13から図16を参照すると、それらは、図12の動作手順1200の詳細例および追加の動作手順を示している。ここで図13を参照すると、それは、ミニマップをビューにレンダリングするステップであって、ミニマップは仮想デスクトップのスケール化イメージおよびビューのスケール化イメージを示すステップを図示した追加の動作1310を含む図12の動作手順を示している。例えば、本開示の一実施形態では、クライアントサブシステム306は、仮想デスクトップ302の、ビュー304が示している一部分を図示するために仮想デスクトップ302およびビュー304のスケール化イメージを示すミニマップ316を生成するように構成できる。例えば、ミニマップ316を含む実施形態では、クライアントサブシステム306は、仮想デスクトップ302を画定するピクセルの範囲、および仮想デスクトップ302に対して相対的にビュー304を画定するピクセルの範囲を受信するように構成できる。この実施形態例では、クライアントサブシステム306は、ビュー304および仮想デスクトップ302両方のピクセル範囲を分割し、仮想デスクトップ302内のビュー304の中心のピクセル座標に対応する、スケール化ビューの中心を決定することによりミニマップ316を生成するように構成できる。この実施形態例では、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、ビュー304の位置を表示するミニマップ316をビュー304の一部分全体にレンダリングするように構成できる。この実施形態例では、ビュー304がスクロールされるにつれて、ビュー304を画定するピクセルの範囲が更新できて、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、ビュー304が変化したことを反映する、更新されたミニマップ316をレンダリングするように構成することができる。
本開示の別の実施形態では、ミニマップ316は、スケール化ビューおよびスケール化仮想デスクトップ302に加えて、サーバー204から受信されたスケール化イメージをレンダリングするように構成できる。例えば、サーバー204から受信された各ウィンドウ、および/またはアイコン描画コマンドは、仮想デスクトップ302内のピクセル位置に関連付けることができる。この実施形態例では、クライアントサブシステム306は、ウィンドウおよび/またはアイコンをスケールして、スケール化仮想デスクトップ内のスケール化ウィンドウおよび/またはスケール化アイコンのピクセル位置を決定するように構成できる。この実施形態例では、クライアントサブシステム306は、クライアント201のディスプレイドライバーを、スケール化アイコンおよび/またはスケール化ウィンドウを含むミニマップ316をビュー304の一部分全体にレンダリングするように構成できる。
本開示のさらに別の実施形態では、ミニマップ316は、ビューおよび仮想デスクトップの塗りつぶしイメージまたは半透明イメージをビュー304全体にレンダリングすることができるが、一実施形態では、計算能力を維持するために、クライアントサブシステム306は、ビュー304および仮想デスクトップ302のワイヤフレームを生成するように構成できる。例えば、ワイヤフレームは、一実施形態では、ピクセルの範囲によって画定されるビューおよび仮想デスクトップのエッジを識別することにより作成されるビジュアルプリゼンテーションを含むことができる。
ここで図14を参照すると、それは、仮想デスクトップに生成されたプログラムのユーザーインターフェイス用のピクセル座標を受信するステップと、プログラムのユーザーインターフェイス用の識別子をミニマップに生成するステップとを図示した追加の動作1410を含む図13の動作手順を示している。例えば、本開示の一実施形態では、クライアント201のネットワークアダプターは、サーバー204から、プログラムのユーザーインターフェイス用の座標を識別する信号を受信するように構成できる。クライアントサブシステム306は、その信号を受信できて、クライアント201のディスプレイドライバーに、仮想デスクトップ302のどの部分にユーザーインターフェイスが描画されたかを素早く判定するために使用できるミニマップ316に識別子をレンダリングするように指示することができる。例えば、サーバー204の実行時サブシステム240は、プログラム用のプロセスおよびスレッドを生成するように構成できる。この実施形態例では、リモートディスプレイサブシステム254は、例えば、プロセスが開始された時の通知、およびプログラム用のユーザーインターフェイスの座標を識別する情報をGDI246から受信するように構成できる。リモートディスプレイサブシステム254は、ピクセル範囲、または新しく生成されたユーザーインターフェイス用のピクセルポイントを識別するメッセージを生成し、信号をトランスポートロジック210を介してクライアント201に送るように構成できる。クライアントサブシステム306は、そのメッセージを受信して、クライアント201のディスプレイドライバーに、スケール化ユーザーインターフェイス、または、例えば、スケール化ユーザーインターフェイスのワイヤフレームを含むミニマップ316をビュー304の一部分全体にレンダリングするように指示するように構成できる。クライアントサブシステム306は、次に、ディスプレイドライバーを、ユーザーインターフェイスが仮想デスクトップ302のどこにレンダリングされたかをユーザーが素早く識別できるようにするために、スケール化ユーザーインターフェイスのカラーを、所定の時間、変更するように構成できる。
ここで図15を参照すると、それは、追加の動作1514および動作1516ならびに詳細1518を含む図12の動作手順を示している。図12の説明を続けると、動作1512は、線形加速因数をカーソル移動情報に適用するステップを示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、カーソル移動情報を受信し、そのカーソル移動情報にスケール値を掛け、ビュー304をスケール化値で定義された量だけスクロールするための信号をクライアントサブシステム306に送信するように構成できる。例えば、一実施形態例では、ビュー304を相対的マウス移動の量より多い数のピクセルだけパンすることが望ましいことがある。例えば、クライアント201がタッチパッドを含む実施形態例では、ユーザーは、仮想デスクトップ302の一方のサイドから他方のサイドへビュー304を移動させるために、タッチパッドを横切って指を不合理な回数スクロールしなければならないことがある。そのため、一実施形態では、スクロールサブシステム308は、相対的移動情報に固定値を掛けて、クライアントサブシステム306に、ビュー304をスケール化量だけ移動させるように指示することができる。具体的な例では、スクロールサブシステム308は、カーソル位置が、ビュー304の右エッジを画定するピクセル上にあることを判定するように構成できる。この例では、ユーザーがマウスをx方向に+1だけ移動させると、スクロールサブシステム308は、ピクセル移動に50などの固定数を掛けて、ビュー304をx方向に50ピクセルだけ移動(パン)するためのメッセージをクライアントサブシステム306に送ることができる。
図15の説明を続けると、それは、カーソルの速さを決定するステップと、動的加速因数を生成するステップであって、動的加速因数はカーソルの速さの関数であるステップと、動的加速因数をカーソル移動情報に適用するステップとを例示した動作1516を追加的に示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、相対的カーソル移動情報を受信し、その相対的カーソル移動情報に動的スケール値を掛け、ビュー304をスケール化値で定義された量でスクロールするための信号をクライアントサブシステム306に送信するように構成できる。例えば、一実施形態では、カーソル310がビュー304を横切って素早く移動する場合、ビュー304を多数のピクセルだけパンすることが望ましいことがある。例えば、ユーザーがカーソル310をビュー304を横切って移動させる場合、ユーザーは仮想デスクトップ302の遠端の何かを操作することに関心があることが推察できる。この例では、スクロールサブシステム308は、ユーザーの意図がビュー304を多数のピクセルだけパンし、適宜、対応することであることを推察するように構成できる。この状況では、スクロールサブシステム308は、カーソル310がビュー304を横切って移動する間、カーソル310の速さに依存するスケール値を生成するように構成できる。例えば、この例では、スクロールサブシステム308は、最後の64個のサンプル全体にわたってカーソル310の座標を追跡するように構成できる。この例では、サンプリング率は固定であってよく、スクロールサブシステム308は、カーソル310の平均の速さを判定するように構成できる。この例では、スクロールサブシステム308は、カーソル310の平均の速さに基づいてスケール値を大きくし、クライアントサブシステム306に、ビュー304をスケール化量だけパンするように指示するように構成できる。例えば、ある実施形態例では、スケール値は速さと共に急激に増加することができる。そのため、カーソル310がビュー304内を移動する速さが速ければ速いほど、ビュー304は、クライアントサブシステム306によって、より多くスクロールされることになる。具体的な実施形態では、カーソル310は、ビュー304を横切って左から右へ移動することができる。この例では、スクロールサブシステム308は、カーソル310の座標はx方向に+10でサンプルを変更していること示す多数のメッセージを受信することができる。この実施形態で、スクロールサブシステム308は、e^10を取ることにより動的加速因数を決定し、クライアントサブシステム306に、ビュー304をx方向に22,026個のピクセルだけ移動させるように指示するように構成できる。同じ実施形態または他の実施形態では、スクロールサブシステム308は、403などの最大の動的な値を設定するように構成できて、そのため、この状況では、クライアントサブシステム306は、何千個のピクセルをスクロールすることによってビュー304を大量に変更することはできない。
図15の説明を続けると、それは、図12の動作手順の詳細1516を追加的に示しており、第1のピクセル範囲は第1のディスプレイドライバーのディスプレイ解像度およびリモートコンピューターの第2のディスプレイドライバーの第2のディスプレイ解像度にさらに対応し、さらに第1のディスプレイドライバーのディスプレイ解像度は第1のエッジによって画定され、第2のディスプレイドライバーのディスプレイ解像度は第2のエッジによって画定されるものとする。例えば、本開示の一実施形態では、サーバー204は、少なくとも2つのディスプレイドライバーを含むリモートディスプレイサブシステム254を含むことができる。この例では、各ディスプレイドライバーは、それ自身のディスプレイ解像度を有することができ、それらのディスプレイ上のイメージを表す信号をトランスポートロジック210を介してクライアント201に送信するように構成できる。この実施形態例では、第1のディスプレイドライバーは、1280×1024ピクセルというディスプレイ解像度で動作するように構成でき、第2のディスプレイドライバーは、800×600ピクセルという解像度で動作することができる。この実施形態例では、図3のクライアントサブシステム306は、各ディスプレイ用の個別のデータストリームを受信し、ディスプレイ解像度の合計を含む仮想デスクトップ302を生成し、例えば、第2のディスプレイドライバーのピクセル範囲を、仮想デスクトップ302と一致するように再マップするように構成できる。この実施形態例では、クライアントサブシステム306は、第1のディスプレイ解像度および第2のディスプレイ解像度を定義するピクセルの範囲を使用して、仮想デスクトップ302内の各ディスプレイ用のエッジを決定することができる。例えば、クライアントサブシステム306は、各ディスプレイのピクセル範囲を仮想デスクトップ302全体のピクセル範囲に関連付けるテーブルを含むことができる。第1のディスプレイドライバー用のディスプレイ解像度が1280×1024であって、第2のディスプレイドライバー用のディスプレイ解像度が800×600である実施形態では、ディスプレイドライバーの物理的レイアウトが第2のディスプレイを論理的に第1のディスプレイの右側になるように設定されると、テーブルは、第2のディスプレイドライバー用のピクセルを仮想ディスプレイ302のx軸のピクセル番号1280から2080、および第2のディスプレイドライバーの垂直位置合わせに応じて、例えば、y軸の0から600または424から1024にマップすることができる。
ここで図16を参照すると、それは、カーソルが第1のディスプレイドライバーのディスプレイ解像度の特定のエッジに到達したことを判定するステップであって、特定のエッジは第2のディスプレイドライバーの特定のエッジに隣接するステップと、ビューを、第2のディスプレイドライバーに対応する仮想デスクトップのエリアにセンタリングするステップとを示した追加の動作1618を含む図15の動作手順の代替的実施形態を示している。例えば、本開示の一実施形態では、スクロールサブシステム308は、各ディスプレイドライバーのピクセル範囲を仮想ディスプレイ302のマップされたピクセル範囲に関連付けて含むように構成できる。この実施形態例では、スクロールサブシステムは、クライアント201のオペレーティングシステム312からカーソル移動情報を受信し、仮想デスクトップ302に対して相対的なカーソル310の座標を保管するように構成できる。この実施形態例では、仮想デスクトップ302に対して相対的なカーソル310の位置は追跡可能であり、カーソル310がディスプレイドライバーのエッジ、例えば、x方向のピクセル1280に到達すると、スクロールサブシステム308は、クライアントサブシステム306に、第2のディスプレイに対応する仮想デスクトップのピクセル上でセンタリングされたピクセルの範囲を表示するようにディスプレイドライバーに指示するためのメッセージを送るように構成できる。
前述の詳しい説明は、システムおよび/またはプロセスの様々な実施形態を例および/または動作図を通して記載している。そのようなブロック図および/または例が1つまたは複数の機能および/または動作を含む場合、当業者は、そのようなブロック図または例の中の各機能および/または動作は、個別に、および/またはまとめて、多様なハードウェア、ソフトウェア、ファームウェア、または実質的にそれらの任意の組み合わせによって実施できることが理解できよう。
本明細書で説明された本主題の詳細な態様が示され、説明されたが、当業者には、本明細書の手法に基づいて、本明細書で説明される主題およびそのより広範な態様から逸脱することなく変更および修正を行えることは明らかであろうし、したがって、添付の特許請求の範囲に記載の請求項は、それらの範囲内に、明細書で説明される主題の真の趣旨および範囲に含まれるようなすべての変更および修正を包含するものとする。

Claims (17)

  1. 仮想デスクトップをナビゲートする方法であって、
    リモートコンピューターから、境界ボックスを記述する情報を受信するステップであって、前記境界ボックスは、仮想デスクトップのサイズを定義し、仮想デスクトップのサイズは、前記リモートコンピューター上の第1のディスプレイドライバーの第1のディスプレイ解像度情報と、前記リモートコンピューター上の第2のディスプレイドライバーの第2のディスプレイ解像度情報と、前記第1のディスプレイドライバーにより生成されるイメージが、前記第2のディスプレイドライバーにより生成されるイメージとの比較に基づいてどのように表示されるかを定義する関係とに基づくものである前記受信するステップと、
    前記受信された前記境界ボックスを記述する情報に従って、前記仮想デスクトップを生成するステップと、
    前記リモートコンピューターから受信されたグラフィックスを前記仮想デスクトップに描画するステップと、
    前記仮想デスクトップのビューをレンダリングするステップであって、前記ビューはエッジによって画定され、前記仮想デスクトップの一部分を示すステップと、
    相対的カーソル移動情報を受信するステップと、
    前記相対的カーソル移動情報および前記ビューの前記エッジから、カーソルが前記ビューのエッジに到達したことを判定するステップと、
    前記仮想デスクトップの前記ビューを前記相対的カーソル移動の方向にスクロールするステップと、
    前記ビューを定義する前記エッジと、前記第1のディスプレイ解像度情報と前記第2のディスプレイ解像度情報とを定義するエッジから、前記ビューのエッジが前記第1のディスプレイ解像度情報のエッジに到達したことを判定するステップと、
    前記カーソルの速さが所定の値より大きいとの判定に応じて、前記仮想デスクトップの前記ビューを前記第2のディスプレイ解像度情報に関連付けられた遠方エッジまでスクロールするステップと
    を含むことを特徴とする方法。
  2. 線形加速因数を前記相対的カーソル移動情報に適用するステップ
    をさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記カーソルの速さを決定するステップと、
    動的加速因数を生成するステップであって、前記動的加速因数は前記カーソルの前記速さの関数であるステップと、
    前記動的加速因数を前記相対的カーソル移動情報に適用するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記カーソルの座標情報および前記第1のディスプレイドライバーおよび前記第2のディスプレイドライバーを画定する前記エッジの座標情報から、前記カーソルが前記第1のディスプレイドライバーのエッジに到達したことを判定するステップと、
    触覚応答を生成するステップと
    をさらに含むことを特徴とする請求項に記載の方法。
  5. 前記仮想デスクトップの前記ビューを前記第2のディスプレイ解像度情報に関連付けられた遠方エッジまでスクロールするステップは、
    前記仮想デスクトップの前記ビューを前記遠方エッジまでジャンプさせることを特徴とする請求項に記載の方法。
  6. 仮想デスクトップをナビゲートするためのコンピューター読み取り可能な命令を収めたコンピューター読み取り可能なストレージ媒体であって、
    リモートコンピューターから、境界ボックスを記述する情報を受信するための命令であって、前記境界ボックスは、仮想デスクトップのサイズを定義し、仮想デスクトップのサイズは、前記リモートコンピューター上の第1のディスプレイドライバーの第1のディスプレイ解像度情報と、前記リモートコンピューター上の第2のディスプレイドライバーの第2のディスプレイ解像度情報と、前記第1のディスプレイドライバーにより生成されるイメージが、前記第2のディスプレイドライバーにより生成されるイメージとの比較に基づいてどのように表示されるかを定義する関係とに基づくものである前記受信するための命令と、
    前記受信された前記境界ボックスを記述する情報に従って、前記仮想デスクトップを生成するための命令と、
    前記リモートコンピューターから受信されたグラフィックスを前記仮想デスクトップに描画するための命令と、
    リモートコンピューターから受信されたグラフィックスを示す仮想デスクトップのビューをレンダリングするための命令であって、前記ビューはピクセルの範囲によって画定され、前記仮想デスクトップはリモートコンピューターのディスプレイ解像度に相当するピクセルの範囲によって画定される、命令と、
    相対的カーソル移動情報を受信するための命令と、
    前記相対的カーソル移動情報および前記ビューを画定する前記ピクセルの範囲から、カーソルが前記ビューのエッジに到達したことを判定するための命令と、
    仮想デスクトップのビューを前記相対的カーソル移動の方向にスクロールするための命令と、
    前記カーソルの速さが所定の値より大きいとの判定に応じて、前記仮想デスクトップの前記ビューを前記第2のディスプレイ解像度情報に関連付けられた遠方エッジまでスクロールするための命令と
    を含むことを特徴とするコンピューター読み取り可能なストレージ媒体。
  7. 前記仮想デスクトップを複数のゾーンに分割するための命令と、
    各ゾーンをキーボードのキーに割り当てるための命令と、
    特定のゾーンに割り当てられたキーの選択を受信するための命令と、
    前記キーの前記選択に応答して前記ビューを前記特定のゾーンにセンタリングするための命令と
    を含むことを特徴とする請求項に記載のコンピューター読み取り可能なストレージ媒体。
  8. ミニマップを前記ビューにレンダリングするための命令であって、前記ミニマップは前記仮想デスクトップのスケール化イメージおよび前記ビューのスケール化イメージを示す、命令
    をさらに含むことを特徴とする請求項に記載のコンピューター読み取り可能なストレージ媒体。
  9. 前記ミニマップは前記仮想デスクトップのワイヤフレームイメージおよび前記ビューのワイヤフレームアウトラインを含むことを特徴とする請求項に記載のコンピューター読み取り可能なストレージ媒体。
  10. ユーザー入力を前記リモートコンピューターに送信するための命令であって、前記リモートコンピューターは前記ユーザー入力に応答してプログラムを実行するように構成される、命令と、
    前記プログラム用のユーザーインターフェイスを表すグラフィックスを受信するための命令と、
    前記プログラム用の前記ユーザーインターフェイスのスケール化イメージで前記ミニマップを更新する命令と
    をさらに含むことを特徴とする請求項に記載のコンピューター読み取り可能なストレージ媒体。
  11. 前記仮想デスクトップ上の前記ユーザーインターフェイスの位置を示す座標を受信するための命令と、
    ユーザー入力を受信するための命令と、
    前記ユーザー入力に応答して前記ビューを前記ユーザーインターフェイスにセンタリングするための命令と
    をさらに含むことを特徴とする請求項10に記載のコンピューター読み取り可能なストレージ媒体。
  12. リモートコンピューターから、境界ボックスを記述する情報を受信する回路であって、前記境界ボックスは、仮想デスクトップのサイズを定義し、仮想デスクトップのサイズは、前記リモートコンピューター上の第1のディスプレイドライバーの第1のディスプレイ解像度情報と、前記リモートコンピューター上の第2のディスプレイドライバーの第2のディスプレイ解像度情報と、前記第1のディスプレイドライバーにより生成されるイメージが、前記第2のディスプレイドライバーにより生成されるイメージとの比較に基づいてどのように表示されるかを定義する関係とに基づくものである前記受信する回路と、
    前記受信された前記境界ボックスを記述する情報に従って、前記仮想デスクトップを生成するための命令と、
    前記リモートコンピューターから受信されたグラフィックスを前記仮想デスクトップに描画するための命令と、
    仮想デスクトップのビューをレンダリングするための回路であって、前記仮想デスクトップは、リモートコンピューターのディスプレイ解像度に相当する第1のピクセルの範囲によって画定され、前記ビューは第2のピクセル範囲によって画定される、回路と、
    カーソル移動情報を受信するための回路と、
    前記カーソル移動情報および前記第2のピクセル範囲から、カーソルが前記第2のピクセル範囲のエッジに到達したことを判定するための回路と、
    前記ビューを前記カーソル移動の方向にスクロールするための回路と、
    前記カーソルの速さが所定の値より大きいとの判定に応じて、前記仮想デスクトップの前記ビューを前記第2のディスプレイ解像度情報に関連付けられた遠方エッジまでスクロールするための回路と
    を含むことを特徴とするコンピューターシステム。
  13. ミニマップを前記ビューにレンダリングするための回路であって、前記ミニマップは前記仮想デスクトップのスケール化イメージおよび前記ビューのスケール化イメージを示す、回路
    をさらに含むことを特徴とする請求項12に記載のシステム。
  14. 前記仮想デスクトップに生成されたプログラムのユーザーインターフェイス用のピクセル座標を受信するための回路と、
    前記プログラムの前記ユーザーインターフェイス用の識別子を前記ミニマップに生成するための回路と
    をさらに含むことを特徴とする請求項13に記載のシステム。
  15. 前記ビューをスクロールするための前記回路は、
    線形加速因数を前記カーソル移動情報に適用するための回路
    をさらに含むことを特徴とする請求項12に記載のシステム。
  16. 前記ビューをスクロールするための前記回路は、
    前記カーソルの前記速さを決定するための回路と、
    動的加速因数を生成するための回路であって、前記動的加速因数は前記カーソルの前記速さの関数である、回路と、
    前記動的加速因数を前記カーソル移動情報に適用するための回路と
    をさらに含むことを特徴とする請求項12に記載のシステム。
  17. 前記カーソルが前記第1のディスプレイドライバーの前記ディスプレイ解像度の特定のエッジに到達したことを判定するための回路であって、前記特定のエッジは前記第2のディスプレイドライバーの特定のエッジに隣接する、回路と、
    前記ビューを、前記第2のディスプレイドライバーに対応する前記仮想デスクトップのエリアにセンタリングするための回路と
    をさらに含むことを特徴とする請求項12に記載のシステム。
JP2011509506A 2008-05-12 2009-03-27 仮想デスクトップのビューのスクロール Active JP5249409B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/119,415 2008-05-12
US12/119,415 US8176434B2 (en) 2008-05-12 2008-05-12 Virtual desktop view scrolling
PCT/US2009/038642 WO2009139963A2 (en) 2008-05-12 2009-03-27 Virtual desktop view scrolling

Publications (3)

Publication Number Publication Date
JP2011520209A JP2011520209A (ja) 2011-07-14
JP2011520209A5 JP2011520209A5 (ja) 2012-05-10
JP5249409B2 true JP5249409B2 (ja) 2013-07-31

Family

ID=41267911

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011509506A Active JP5249409B2 (ja) 2008-05-12 2009-03-27 仮想デスクトップのビューのスクロール

Country Status (8)

Country Link
US (1) US8176434B2 (ja)
EP (1) EP2291760B1 (ja)
JP (1) JP5249409B2 (ja)
KR (1) KR101618384B1 (ja)
CN (1) CN102027464B (ja)
MX (1) MX2010011964A (ja)
RU (1) RU2491609C2 (ja)
WO (1) WO2009139963A2 (ja)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9513765B2 (en) * 2007-12-07 2016-12-06 Sony Corporation Three-dimensional sliding object arrangement method and system
US8555193B2 (en) * 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
JP4591568B2 (ja) * 2008-07-16 2010-12-01 セイコーエプソン株式会社 画像表示制御方法、画像供給装置及び画像表示制御プログラム
US9880891B2 (en) * 2008-09-30 2018-01-30 Hewlett-Packard Development Company, L.P. Assignment and failover of resources
CN102257471B (zh) * 2008-10-26 2015-07-22 思杰***有限公司 一种用于在移动计算设备上显示在服务器上执行的应用的窗口的方法
JP5263049B2 (ja) * 2009-07-21 2013-08-14 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US8650559B2 (en) * 2009-08-27 2014-02-11 Red Hat Israel, Ltd. Automatic remote installation of a virtualization host
WO2011037558A1 (en) 2009-09-22 2011-03-31 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
US8832585B2 (en) * 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US8780069B2 (en) 2009-09-25 2014-07-15 Apple Inc. Device, method, and graphical user interface for manipulating user interface objects
KR101658489B1 (ko) * 2009-11-25 2016-09-22 크루셜텍 (주) 포인팅 디바이스를 이용하여 화면을 제어하는 방법
US20110214063A1 (en) * 2010-03-01 2011-09-01 Microsoft Corporation Efficient navigation of and interaction with a remoted desktop that is larger than the local screen
JP5740826B2 (ja) * 2010-03-29 2015-07-01 セイコーエプソン株式会社 画像表示装置、画像情報処理装置及び画像情報処理方法
KR101167782B1 (ko) * 2010-06-16 2012-07-25 (주)네오위즈게임즈 해상도 차이를 보완하는 방법 및 단말기
US8868642B2 (en) * 2010-07-08 2014-10-21 Red Hat Israel, Ltd. System and method for dynamically switching between mouse modes
US9798436B2 (en) 2010-07-08 2017-10-24 Red Hat Israel, Ltd. Remote computing with a low latency mouse mode
US9684424B2 (en) * 2010-07-08 2017-06-20 Red Hat Israel, Ltd. Transforming cursor graphics information
CH703724A1 (de) * 2010-09-15 2012-03-15 Ferag Ag Grafische benutzerschnittstelle.
CN103140825B (zh) * 2010-09-30 2016-03-30 乐天株式会社 阅览装置、阅览方法
TW201220176A (en) * 2010-10-27 2012-05-16 Ibm A method, computer program and system for multi-desktop management
US20120185805A1 (en) 2011-01-14 2012-07-19 Apple Inc. Presenting Visual Indicators of Hidden Objects
CA2836813C (en) * 2011-05-23 2020-10-27 Jeffrey Jon REUSCHEL Digital whiteboard collaboration apparatuses, methods and systems
US20140055400A1 (en) 2011-05-23 2014-02-27 Haworth, Inc. Digital workspace ergonomics apparatuses, methods and systems
US9471192B2 (en) 2011-05-23 2016-10-18 Haworth, Inc. Region dynamics for digital whiteboard
US9465434B2 (en) 2011-05-23 2016-10-11 Haworth, Inc. Toolbar dynamics for digital whiteboard
US20130007224A1 (en) * 2011-06-30 2013-01-03 Yuanjie Yang Lightweight Method for Out-Of-Band Management of a Remote Computer with a Mirror of Remote Software Resources
WO2012159361A1 (zh) * 2011-08-01 2012-11-29 华为技术有限公司 虚拟桌面中分布处理的方法和***
CN103959208A (zh) * 2011-10-28 2014-07-30 汤姆逊许可公司 基于互联网浏览器远程用户界面虚拟鼠标光标定位的方法
KR101916742B1 (ko) * 2011-11-10 2018-11-09 삼성전자 주식회사 휴대 단말기의 사용자 인터페이스 제공 방법 및 장치
KR101888680B1 (ko) * 2011-12-06 2018-08-17 삼성전자 주식회사 디스플레이장치 및 그 제어방법
CN103176639A (zh) * 2011-12-23 2013-06-26 英业达股份有限公司 具有远距离输入装置的计算机设备
US9423994B2 (en) * 2012-02-22 2016-08-23 Citrix Systems, Inc. Hierarchical display
US9311169B2 (en) * 2012-05-02 2016-04-12 Nvidia Corporation Server based graphics processing techniques
US9479548B2 (en) 2012-05-23 2016-10-25 Haworth, Inc. Collaboration system with whiteboard access to global collaboration data
US9479549B2 (en) 2012-05-23 2016-10-25 Haworth, Inc. Collaboration system with whiteboard with federated display
US8970492B2 (en) * 2012-06-08 2015-03-03 Microsoft Technology Licensing, Llc Remote session control using multi-touch inputs
US10353718B2 (en) * 2012-07-23 2019-07-16 Vmware, Inc. Providing access to a remote application via a web client
GB2505406A (en) * 2012-08-16 2014-03-05 Realvnc Ltd A method and system of localising a pointer to the corner of a window when using virtual network computing (VNC) to control a client device.
US20140075377A1 (en) 2012-09-10 2014-03-13 Samsung Electronics Co. Ltd. Method for connecting mobile terminal and external display and apparatus implementing the same
JP6221214B2 (ja) * 2012-09-26 2017-11-01 富士通株式会社 システム、端末装置および画像処理方法
CN103412701B (zh) * 2012-11-01 2016-08-31 华为技术有限公司 远程桌面图像处理方法及装置
KR101272865B1 (ko) * 2012-11-30 2013-06-10 (주)인스웨이브시스템즈 모바일 단말기 화면 구성 장치 및 그 방법
US9075494B2 (en) * 2013-02-01 2015-07-07 Cyberlink Corp. Systems and methods for performing object selection
US11861561B2 (en) 2013-02-04 2024-01-02 Haworth, Inc. Collaboration system including a spatial event map
US10304037B2 (en) 2013-02-04 2019-05-28 Haworth, Inc. Collaboration system including a spatial event map
EP2773127A1 (en) * 2013-02-28 2014-09-03 Televic Rail NV System for visualizing data
US20140250384A1 (en) * 2013-03-01 2014-09-04 Microsoft Corporation Remotely Navigating A Display of a Target Computing Device Using A Screen of a Source Computing Device
US20140298267A1 (en) * 2013-04-02 2014-10-02 Microsoft Corporation Navigation of list items on portable electronic devices
US20150012831A1 (en) * 2013-07-08 2015-01-08 Jacoh, Llc Systems and methods for sharing graphical user interfaces between multiple computers
KR20150016695A (ko) * 2013-08-05 2015-02-13 삼성전자주식회사 디스플레이장치 및 그 제어방법
GB2518206B (en) 2013-09-13 2021-03-31 Realvnc Ltd System and method for remote computer control
US9383910B2 (en) * 2013-10-04 2016-07-05 Microsoft Technology Licensing, Llc Autoscroll regions
US20150143286A1 (en) * 2013-11-20 2015-05-21 Xiaomi Inc. Method and terminal for responding to sliding operation
CN103616989B (zh) * 2013-12-12 2017-05-24 北京星网锐捷网络技术有限公司 一种自动调整光标位置的方法、装置及移动终端
US10831365B2 (en) 2014-03-06 2020-11-10 Unify Gmbh & Co. Kg Method for controlling a display device at the edge of an information element to be displayed
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
CN105227603A (zh) * 2014-06-23 2016-01-06 中兴通讯股份有限公司 虚拟桌面图像处理方法、装置、虚拟桌面服务器及瘦终端
CN105516229B (zh) * 2014-10-15 2020-02-28 中兴通讯股份有限公司 一种更新虚拟桌面的方法和装置
FR3029382A1 (fr) * 2014-11-27 2016-06-03 Orange Procede et dispositif d'interaction d'un terminal client avec une application executee par un equipement, et terminal l'utilisant
WO2016098497A1 (ja) * 2014-12-17 2016-06-23 三菱電機株式会社 遠隔操作システムおよび情報処理方法
KR101651023B1 (ko) * 2014-12-19 2016-09-05 한국과학기술원 기존 대화형 3d 컴퓨터 그래픽 응용프로그램에 햅틱 입출력 기능을 부가하기 위한 햅틱 플러그인 시스템 및 방법
KR102185367B1 (ko) 2014-12-26 2020-12-01 삼성전자주식회사 영상 표시 장치 및 영상 표시 방법
US10684742B2 (en) * 2015-01-30 2020-06-16 Fujifilm Corporation Medical support apparatus, method and system for medical care
US10802783B2 (en) 2015-05-06 2020-10-13 Haworth, Inc. Virtual workspace viewport following in collaboration systems
US10082941B2 (en) 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US9900602B2 (en) 2015-08-20 2018-02-20 Citrix Systems, Inc. Optimizing remote graphics delivery and presentation
CN105194875B (zh) * 2015-10-22 2019-03-19 网易(杭州)网络有限公司 一种游戏地图显示方法及其装置、移动客户端、电脑客户端
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
CN106648356B (zh) * 2016-11-16 2020-04-17 西安诺瓦星云科技股份有限公司 基于Android平台的走马灯效果实现装置及方法
US10949222B2 (en) * 2017-05-30 2021-03-16 Citrix Systems, Inc. System and method for displaying customized user guides in a virtual client application
US11126325B2 (en) 2017-10-23 2021-09-21 Haworth, Inc. Virtual workspace including shared viewport markers in a collaboration system
US12019850B2 (en) 2017-10-23 2024-06-25 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US11934637B2 (en) 2017-10-23 2024-03-19 Haworth, Inc. Collaboration system including markers identifying multiple canvases in multiple shared virtual workspaces
US11379252B1 (en) * 2018-01-31 2022-07-05 Parallels International Gmbh System and method for providing layouts for a remote desktop session
CN109791444A (zh) * 2018-06-27 2019-05-21 华为技术有限公司 调用输入法的方法和装置、服务器和终端
US11665166B2 (en) * 2018-11-09 2023-05-30 Barry Ian Dynkin Secure computing platform
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US11573694B2 (en) 2019-02-25 2023-02-07 Haworth, Inc. Gesture based workflows in a collaboration system
US11789601B2 (en) * 2019-11-05 2023-10-17 Dell Products L.P. System and method for identifying user intent using four-dimensional coordinates of an input pointer
US11567644B2 (en) 2020-02-03 2023-01-31 Apple Inc. Cursor integration with a touch screen user interface
CN111488190B (zh) * 2020-03-31 2021-10-15 腾讯科技(深圳)有限公司 屏幕分享方法、装置、计算机设备和存储介质
US11226690B2 (en) * 2020-04-10 2022-01-18 Dell Products, L.P. Systems and methods for guiding a user with a haptic mouse
US11750672B2 (en) 2020-05-07 2023-09-05 Haworth, Inc. Digital workspace sharing over one or more display clients in proximity of a main client
US11212127B2 (en) 2020-05-07 2021-12-28 Haworth, Inc. Digital workspace sharing over one or more display clients and authorization protocols for collaboration systems
JP2022145219A (ja) * 2021-03-19 2022-10-03 株式会社リコー 表示装置、データ共有システム、表示制御方法およびプログラム
US11776507B1 (en) 2022-07-20 2023-10-03 Ivan Svirid Systems and methods for reducing display latency

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53936A (en) * 1976-06-25 1978-01-07 Hitachi Ltd Display method
JPH05143238A (ja) * 1991-11-25 1993-06-11 Fujitsu Ltd ポインテイングカーソル移動制御装置
US5929840A (en) * 1994-03-04 1999-07-27 Microsoft Corporation System and method for computer cursor control
US5495566A (en) * 1994-11-22 1996-02-27 Microsoft Corporation Scrolling contents of a window
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US6437803B1 (en) * 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
US6750877B2 (en) * 1995-12-13 2004-06-15 Immersion Corporation Controlling haptic feedback for enhancing navigation in a graphical environment
US5874936A (en) * 1996-12-20 1999-02-23 International Business Machines Corporation Method and apparatus for automatic scrolling by remote control
US6252579B1 (en) * 1997-08-23 2001-06-26 Immersion Corporation Interface device and method for providing enhanced cursor control with force feedback
JP3627791B2 (ja) 1998-08-10 2005-03-09 富士通株式会社 他端末操作装置
US6473101B1 (en) * 1999-02-01 2002-10-29 Gordon F. Grigor Single surface multi-view panning system and method for multiple displays
CA2349649A1 (en) * 2000-07-31 2002-01-31 International Business Machines Corporation Switching between virtual desktops
US6980184B1 (en) * 2000-09-27 2005-12-27 Alien Technology Corporation Display devices and integrated circuits
JP5039911B2 (ja) * 2000-10-11 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理装置、入出力装置、タッチパネルの制御方法、記憶媒体及びプログラム伝送装置
US7333071B2 (en) * 2001-05-11 2008-02-19 Xerox Corporation Methods of using mixed resolution displays
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US7010755B2 (en) * 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
DE10242919A1 (de) * 2002-09-16 2004-03-25 Siemens Ag System zur virtuellen Prozessanbindung über Remote Desktop Protocol (RDP)
WO2004031934A1 (en) * 2002-10-07 2004-04-15 Myorigo Oy Cursor for electronic devices
US20060176294A1 (en) * 2002-10-07 2006-08-10 Johannes Vaananen Cursor for electronic devices
US7519910B2 (en) * 2002-10-10 2009-04-14 International Business Machines Corporation Method for transferring files from one machine to another using adjacent desktop displays in a virtual network
US20040145605A1 (en) * 2003-01-28 2004-07-29 Sujoy Basu Access method and system for remote desktops
US7369102B2 (en) * 2003-03-04 2008-05-06 Microsoft Corporation System and method for navigating a graphical user interface on a smaller display
CN100592246C (zh) * 2003-03-04 2010-02-24 微软公司 在较小的显示屏上浏览图形用户接口的方法
US7797386B2 (en) * 2004-02-27 2010-09-14 Research In Motion Limited System and method for remotely configuring a desktop mailbox
WO2006026650A2 (en) * 2004-08-30 2006-03-09 University Of Utah Research Foundation Locally operated desktop environment for a remote computing system
US7870256B2 (en) * 2005-03-25 2011-01-11 Hewlett-Packard Development Company, L.P. Remote desktop performance model for assigning resources
US7657837B2 (en) * 2005-04-06 2010-02-02 Ericom Software Ltd. Seamless windows functionality to remote desktop sessions regarding z-order
US20070056009A1 (en) * 2005-08-23 2007-03-08 Michael Spilo System and method for viewing and controlling a personal computer using a networked television
CN101361082B (zh) * 2005-12-15 2013-07-31 巴克莱投资银行 用于安全远程台式机访问的***和方法
US20070176900A1 (en) * 2006-02-02 2007-08-02 Samsung Electronics Co., Ltd. Controlling cursor speed from a pointing device

Also Published As

Publication number Publication date
WO2009139963A2 (en) 2009-11-19
CN102027464A (zh) 2011-04-20
CN102027464B (zh) 2013-08-21
MX2010011964A (es) 2010-11-30
EP2291760A4 (en) 2013-04-10
RU2010146079A (ru) 2012-05-20
JP2011520209A (ja) 2011-07-14
KR20110021755A (ko) 2011-03-04
KR101618384B1 (ko) 2016-05-04
EP2291760A2 (en) 2011-03-09
EP2291760B1 (en) 2016-03-23
WO2009139963A3 (en) 2010-02-18
US8176434B2 (en) 2012-05-08
US20090282359A1 (en) 2009-11-12
RU2491609C2 (ru) 2013-08-27

Similar Documents

Publication Publication Date Title
JP5249409B2 (ja) 仮想デスクトップのビューのスクロール
US11494010B2 (en) Touch support for remoted applications
US11281360B2 (en) Display management for native user experiences
US9740507B2 (en) Interacting with remote applications displayed within a virtual desktop of a tablet computing device
US10254929B2 (en) User interface virtualization techniques
US20110214063A1 (en) Efficient navigation of and interaction with a remoted desktop that is larger than the local screen
JP6050719B2 (ja) リモートデバイスのためのユーザインターフェイス仮想化
US9542080B2 (en) User interface virtualization of context menus
JP4361080B2 (ja) 画像データを生成するための方法、プログラム、および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130201

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130411

R150 Certificate of patent or registration of utility model

Ref document number: 5249409

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250