(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-08
(54)【発明の名称】ポインタモードの動的スイッチング
(51)【国際特許分類】
G06F 3/04812 20220101AFI20221201BHJP
【FI】
G06F3/04812
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022519981
(86)(22)【出願日】2020-06-26
(85)【翻訳文提出日】2022-03-30
(86)【国際出願番号】 US2020039787
(87)【国際公開番号】W WO2021071563
(87)【国際公開日】2021-04-15
(32)【優先日】2019-10-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】クリス パヴロー
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA04
5E555AA06
5E555BA04
5E555BA52
5E555BB04
5E555BD02
5E555BD03
5E555CA02
5E555FA00
(57)【要約】
本技術は、ユーザデバイスにおいて、入力デバイスからのポインタ入力を処理するものである。かかる技術は、入力デバイスからの入力を、ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供することを含む。かかる技術は、さらに、ユーザデバイス上でリモートデスクトップセッションの無効化を示すイベントを検出することを含む。かかる技術はさらに、イベントの検出に応答して、入力デバイスからの入力を、ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供し、リモートデスクトップセッションの代わりに少なくとも一つのローカルアプリケーションを使用して入力デバイスからの入力の処理を継続可能にすることを含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
ユーザデバイスにおいて入力デバイスからのポインタ入力を処理する方法であって、
前記入力デバイスからの入力を、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供することと、
前記リモートデスクトップセッションの無効化を示す、前記ユーザデバイス上のイベントを検出することと、
前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して前記入力デバイスからの入力の処理を継続可能にすることと、
を含む方法。
【請求項2】
前記ユーザデバイスがタッチスクリーンを備え、
前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するステップが、
前記タッチスクリーン上に第1のカーソルを表示し、前記入力デバイスからの入力に応答して前記第1のカーソルを移動させるステップを含み、
前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な前記少なくとも一つのローカルアプリケーションに提供するステップが、
前記第1のカーソルの代わりに、該第1のカーソルとは視覚的に異なる第2のカーソルをタッチスクリーン上に表示し、前記入力デバイスからの入力に応答して前記第2のカーソルを移動させるステップを含む請求項1に記載の方法。
【請求項3】
前記入力デバイスからの入力を前記リモートデスクトップセッションに提供している間、前記タッチスクリーン上に仮想デスクトップのビューを表示し、前記第1のカーソルが、前記入力デバイスからの入力に応答して、仮想デスクトップのビュー内を移動するステップを含む請求項2に記載の方法。
【請求項4】
前記タッチスクリーン上に第1のカーソルを表示し、前記入力デバイスからの入力に応答して前記第1のカーソルを移動させるステップが、
前記入力デバイスからの入力を使用して、前記仮想デスクトップに表示可能な、前記ユーザデバイスから遠隔でホストされる少なくとも一つのリモートアプリケーションを制御するステップを含む請求項3に記載の方法。
【請求項5】
前記入力デバイスを、デスクトップクラスのポインタデータを前記入力として提供するデスクトップクラスポインタ状態から、ネイティブポインタデータを前記入力として提供するネイティブポインタ状態に切り替える無線コマンドを、前記ユーザデバイスから前記入力デバイスに送信するステップを含む請求項2から4のいずれか一項に記載の方法。
【請求項6】
前記入力デバイスを前記ネイティブポインタ状態から前記デスクトップクラスポインタ状態に切り替える別の無線コマンドを、前記ユーザデバイスから前記入力デバイスに送信するステップを含む請求項5に記載の方法。
【請求項7】
前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、
前記別のイベントを検出したことに応答して、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するステップと、
を含む請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記入力デバイスからの入力が前記少なくとも一つのローカルアプリケーションに提供された後、前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、
前記別のイベントを検出することに応答して、前記入力デバイスからの入力を前記少なくとも一つのローカルアプリケーションに提供するように構成されるネイティブポインタモードから、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するように構成されるデスクトップクラスポインタモードに戻すステップと、
を含む請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記入力デバイスからの入力が前記リモートデスクトップセッションに提供される前に、前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、
前記別のイベントを検出することに応答して、前記入力デバイスからの入力を前記少なくとも一つのローカルアプリケーションに提供するように構成されるネイティブポインタモードから、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するように構成されるデスクトップクラスポインタモードに移行するステップと、
を含む請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記イベントを検出するステップが、前記イベントとして、前記リモートデスクトップセッションの無効化とバックグラウンドへの配置を検出するステップを含み、
前記方法が、前記リモートデスクトップセッションの無効化及びバックグラウンドへの配置に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップを含む請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記イベントを検出するステップが、前記イベントとして、前記リモートデスクトップセッションの終了を検出するステップを含み、
前記方法が、前記リモートデスクトップセッションの終了に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップを含む請求項1から9のいずれか一項に記載の方法。
【請求項12】
前記イベントを検出するステップが、前記リモートデスクトップセッション上での前記少なくとも一つのローカルアプリケーションの有効化をイベントとして検出するステップを含み、
前記方法が、前記リモートデスクトップセッション上での前記少なくとも一つのローカルアプリケーションの有効化に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップを含む請求項1から9のいずれか一項に記載の方法。
【請求項13】
前記イベントを検出することが、前記イベントとして、アプリケーションのクラッシュによる前記リモートデスクトップセッションの終了を検出するステップを含み、
前記方法が、アプリケーションのクラッシュによる前記リモートデスクトップセッションの終了に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップを含む請求項1から9のいずれか一項に記載の方法。
【請求項14】
前記入力デバイスが外部マウスであり、前記ユーザデバイスがBluetooth通信を介して前記外部マウスと通信し、前記ユーザデバイスがコンピュータ化されたネットワークを介して前記リモートデスクトップセッションと通信する請求項1から13のいずれか一項に記載の方法。
【請求項15】
入力デバイスからの入力を処理する命令セットを格納する非一時的なコンピュータ可読媒体を有するコンピュータプログラム製品であって、ユーザデバイスによって実行される場合に、前記命令セットが、
前記入力デバイスからの入力を、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供することと、
前記ユーザデバイス上の、リモートデスクトップセッションの無効化を示すイベントを検出することと、
前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して前記入力デバイスからの入力の処理を継続可能にすることと、
を前記ユーザデバイスに実行させるコンピュータプログラム製品。
【請求項16】
タッチスクリーンと、
メモリと、
前記タッチスクリーン及び前記メモリに結合された制御回路と、
を備え、
前記制御回路によって実行された場合に、前記制御回路に、
前記入力デバイスからの入力を、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供させ、
前記ユーザデバイス上の、前記リモートデスクトップセッションの無効化を示すイベントを検出させ、
前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して前記入力デバイスからの入力の処理を継続可能にさせる命令を前記メモリが格納するユーザデバイス。
【請求項17】
入力デバイスからユーザデバイスを制御する方法であって、
前記入力デバイスから前記ユーザデバイスに第1の入力を提供して、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションを制御するステップと、
前記入力デバイスから前記ユーザデバイスに第2の入力を提供して、前記リモートデスクトップセッションから、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションへのコンテキスト変更を提供するステップと、
前記コンテキスト変更の後、前記入力デバイスから前記ユーザデバイスに第3の入力を提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを制御するステップと、
を含む方法。
【請求項18】
前記第1の入力を提供するステップが、デスクトップクラスポインタ状態で動作して、前記ユーザデバイスにデスクトップクラスポインタの入力を提供するステップを含み、
前記第3の入力を提供するステップが、ネイティブポインタ状態で動作して、前記ユーザデバイスにネイティブポインタの入力を提供するステップを含み、
前記方法が、前記リモートデスクトップセッションから前記少なくとも一つのローカルアプリケーション実行ファイルへのコンテキスト変更により、前記ユーザデバイスがデスクトップクラスポインタモードからネイティブポインタモードに動的に切り替わったことを示す前記ユーザデバイスからのコマンドに応答して、前記デスクトップクラスポインタ状態から前記ネイティブポインタ状態に遷移するステップを含む請求項17に記載の方法。
【請求項19】
前記第3の入力を提供した後に、前記入力デバイスから前記ユーザデバイスに第4の入力を提供して、前記ユーザデバイス上で実行可能な前記少なくとも一つのローカルアプリケーションから、前記ユーザデバイスから離れた機器上でホストされるリモートデスクトップセッションへの別のコンテキスト変更を提供するステップと、を含む請求項17または請求項18に記載の方法。
【請求項20】
本体と、
通信インタフェースと、
前記本体とともに配置され、前記通信インタフェースと結合される回路と、
を備え、
前記回路が、
前記通信インタフェースを介してユーザデバイスに第1の入力を提供して、前記ユーザデバイスから離れた機器上でホストされるリモートデスクトップセッションを制御し、
前記通信インタフェースを介して前記ユーザデバイスに第2の入力を提供して、前記リモートデスクトップセッションから前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションへのコンテキスト変更を提供し、
前記通信インタフェースを介して前記ユーザデバイスに第3の入力を提供して、前記リモートデスクトップセッションの代わりに、前記少なくとも一つのローカルアプリケーションを制御するように構成及び配置される電子機器。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本出願は、2020年3月20日に出願された先の米国出願16/825,037に関連しており、その内容および教示は、その全体が参照により本明細書に組み込まれる。先行して提出された米国出願16/825,037は、2019年10月7日に出願された先の米国出願第62/911,520の正規の出願であり、その内容および教示は、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
従来の電子タブレットは、ユーザにコンテンツを表示するのと同時に、ユーザからのフィンガージェスチャを受け取るタッチスクリーンを備えている。フィンガージェスチャの例には、1本指タップ、2本指タップ、1本指スワイプ、2本指スワイプ、ピンチインジェスチャ(2本の指を互いに近づける)、ピンチアウトジェスチャ(2本の指が互いに離す)が含まれる。
【0003】
このような従来の電子タブレットは、ワイヤレスコンピュータマウスからのマウス入力を受け取るためのワイヤレスインタフェースをさらに備えることができる。マウス入力の例には、マウス座標、ボタンプレス、ボタンリリース、スクロール入力などが含まれる。
【発明の概要】
【0004】
改良された技術には、入力デバイス(トラックボール、トラックパッド、タッチスクリーン、外部マウス、その他のポインティングデバイスや周辺機器など)からの入力を処理する際に、ユーザデバイス(スマートフォン、タブレット、タッチスクリーンを備えたラップトップ、その他のモバイルデバイスやタッチデバイスなど)をネイティブポインタモードとデスクトップクラスポインタモードとの間で動的に切り替えることが含まれる。このようなモード変更は、入力デバイスからの入力をどのように処理するかを制御することにより、単にポインタグラフィックスを変更するだけではない場合がある(例えば、入力をローカルアプリケーションの標準的なポインタ入力として解釈する場合と、入力をリモートデスクトップセッションに送信する場合など)。このようなモードの切り替えは、リアルタイムで発生して検出されるコンテキスト変更(リモートデスクトップセッションの確立/終了、ローカルアプリケーションとリモートデスクトップセッションとの間でのフォーカスの切り替えなど)のようなイベントに応じて行われることがある。
【0005】
ネイティブポインタモードでは、ユーザデバイスは入力デバイスから標準ポインタ入力を受け取り、標準ポインタ入力に応答して、タッチスクリーン上に表示可能な標準ポインタ動作を提供する。このような標準ポインタ動作は、ネイティブポインタを表示すること、入力デバイスの移動に応じてネイティブポインタを移動させること、標準ポインタ入力を有効にして一つまたは複数のローカルアプリケーションを制御することなどを含んでいてもよい。さらに、ユーザデバイスは、タップ、スワイプ、2本指スワイプ、補助的または複雑なタッチスクリーンのジェスチャにマッピングされる単純なタッチスクリーンのジェスチャなど、ユーザデバイスのタッチスクリーン上で提供されるジェスチャに応答しながら、標準ポインタ動作を提供してもよい。
【0006】
デスクトップクラスポインタモードでは、ユーザデバイスは、入力デバイスからデスクトップクラスポインタ入力を受け取り、デスクトップクラスポインタ入力に応答して、標準ポインタ動作の代わりにデスクトップクラスポインタ動作を提供する。具体的には、ユーザデバイスは、ネイティブポインタを非表示にし(またはタッチスクリーン上に表示しないようにし)、デスクトップクラスポインタ入力を、ユーザがユーザデバイス及び入力デバイスを使用してデスクトップクラス環境にアクセスすることを可能にするデスクトップクラス(またはスタイル)インタフェースに送る。デスクトップクラス環境は、リモートセッション機器にホストされる一連のリモートデスクトップセッションリソースを制御するリモートデスクトップ(または仮想化)セッションを含んでいてもよい。リモートリソースの例には、リモート(または仮想)デスクトップもしくはワークスペース、リモートアプリケーション、リモート仮想マシン及びリモートセッションプラットフォームなどが含まれる。
【0007】
リモートデスクトップセッションの一部として、ユーザデバイスのタッチスクリーンは、ローカルに見えるワークスペース環境(例えば、デスクトップのビューまたはイメージ)と、デスクトップクラスのポインタ入力に応答してそのワークスペース環境内を移動する仮想化ポインタ(例えば、マウスカーソルや同様のポインティングアイコン)を表示する。したがって、ユーザは、入力デバイスを使用して、ユーザデバイスの外部にあるリモートデスクトップセッションリソースの豊富で堅牢なセットを制御することができる。
【0008】
ある実施形態によれば、ユーザデバイスは、特定のタッチスクリーン機能を無効にすることができる。例えば、ネイティブポインタモード時に、ユーザデバイスが単純なタッチスクリーンのジェスチャを補助的または複雑なタッチスクリーンのジェスチャにマッピングしている場合、ユーザデバイスは、デスクトップクラスポインタモード時に、そのような機能をオフにしてもよい。
【0009】
ユーザデバイスがネイティブポインタモードとデスクトップクラスポインタモードの間で移行できるようにするために、ユーザデバイスは、コンテキスト変更のようなイベントに応答してこれらのポインタモードを動的に切り替えるように構成および配置されている。このようなコンテキスト変更には、デスクトップクラスインタフェースを生成/オープンする専用のワークスペースアプリケーションを起動すること、デスクトップクラスインタフェースをクローズすること、デスクトップクラスインタフェースで作業した後にローカル環境(またはローカルアプリケーション)をアクティブにすること、ローカル環境で作業した後にデスクトップクラスインタフェースをアクティブにすること、デスクトップクラスインタフェースがユーザデバイス上で継続して実行されている間にリモートデスクトップセッションを確立および/またはクローズすること、マルチスクリーンレイアウト内のポインタ遷移を識別すること(例えば、エッジ検出)などを含むことができる。
【0010】
したがって、ユーザデバイスは、あるときはネイティブポインタモードで、別のときはデスクトップクラスポインタモードで常駐(または操作)することができる。さらに、ポインタモードの切り替えは、ユーザに負担をかけずに透過的/自動的に行うことができる。
【0011】
一実施形態は、外部マウス又は同様のポインティングデバイスのような入力デバイスからのポインタ入力を、ユーザデバイスで処理する方法を対象とする。本方法は、入力デバイスからの入力を、ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供するステップを含む。本方法は、前記ユーザデバイス上の前記リモートデスクトップセッションの無効化を示すイベントを検出するステップをさらに含む。本方法は、前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して、前記入力デバイスからの入力の処理を継続可能にするステップをさらに含む。
【0012】
いくつかの構成では、前記ユーザデバイスはタッチスクリーンを備える。さらに、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するステップが、タッチスクリーン上に第1のカーソルを表示し、前記入力デバイスからの入力に応答して前記第1のカーソルを移動させるステップを含む。さらに、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供するステップが、前記第1のカーソルの代わりに、該第1のカーソルとは視覚的に異なる第2のカーソルをタッチスクリーン上に表示し、前記入力デバイスからの入力に応答して前記第2のカーソルを移動させるステップを含む。
【0013】
いくつかの構成では、本方法は、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供している間、前記タッチスクリーン上に仮想デスクトップのビューを表示するステップをさらに含む。前記第1のカーソルが、前記入力デバイスからの入力に応答して、仮想デスクトップのビュー内を移動する。
【0014】
いくつかの構成では、前記タッチスクリーン上に第1のカーソルを表示し、前記入力デバイスからの入力に応答して前記第1のカーソルを移動させるステップが、前記入力デバイスからの入力を使用して、前記仮想デスクトップに表示可能な、前記ユーザデバイスから遠隔でホストされる少なくとも一つのリモートアプリケーションを制御するステップを含む。
【0015】
いくつかの構成では、本方法は、前記入力デバイスを、デスクトップクラスのポインタデータを前記入力として提供するデスクトップクラスポインタ状態から、ネイティブポインタデータを前記入力として提供するネイティブポインタ状態に切り替える無線コマンドを、前記ユーザデバイスから前記入力デバイスに送信するステップをさらに含む。
【0016】
いくつかの構成では、本方法は、前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、前記別のイベントを検出したことに応答して、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するステップと、をさらに含む。
【0017】
いくつかの構成では、本方法は、前記入力デバイスを前記ネイティブポインタ状態から前記デスクトップクラスポインタ状態に切り替える別の無線コマンドを、前記ユーザデバイスから前記入力デバイスに送信するステップをさらに含む。
【0018】
いくつかの構成では、本方法は、前記入力デバイスからの入力が前記少なくとも一つのローカルアプリケーションに提供された後、前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、前記別のイベントを検出することに応答して、前記入力デバイスからの入力を前記少なくとも一つのローカルアプリケーションに提供するように構成されるネイティブポインタモードから、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するように構成されるデスクトップクラスポインタモードに戻すステップと、をさらに含む。
【0019】
いくつかの構成では、本方法は、前記入力デバイスからの入力が前記リモートデスクトップセッションに提供される前に、前記リモートデスクトップセッションの有効化を示す別のイベントを検出するステップと、前記別のイベントを検出することに応答して、前記入力デバイスからの入力を前記少なくとも一つのローカルアプリケーションに提供するように構成されるネイティブポインタモードから、前記入力デバイスからの入力を前記リモートデスクトップセッションに提供するように構成されるデスクトップクラスポインタモードに移行するステップと、をさらに含む。
【0020】
いくつかの構成では、前記イベントを検出するステップが、前記イベントとして、前記リモートデスクトップセッションの無効化とバックグラウンドへの配置を検出するステップを含む。さらに、本方法は、前記リモートデスクトップセッションの無効化及びバックグラウンドへの配置に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップをさらに含む。
【0021】
いくつかの構成では、前記イベントを検出するステップが、前記イベントとして、前記リモートデスクトップセッションの終了を検出するステップを含む。さらに、本方法は、前記リモートデスクトップセッションの終了に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップをさらに含む。
【0022】
いくつかの構成では、前記イベントを検出するステップが、前記リモートデスクトップセッション上での前記少なくとも一つのローカルアプリケーションの有効化をイベントとして検出するステップを含む。さらに、本方法は、前記リモートデスクトップセッション上での前記少なくとも一つのローカルアプリケーションの有効化に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップをさらに含む。
【0023】
いくつかの構成では、前記イベントを検出することが、前記イベントとして、アプリケーションのクラッシュによる前記リモートデスクトップセッションの終了を検出するステップを含む。さらに、本方法は、アプリケーションのクラッシュによる前記リモートデスクトップセッションの終了に応答して、前記入力デバイスから前記リモートデスクトップセッションへの入力の提供から、前記入力デバイスから前記少なくとも一つのローカルアプリケーションへの入力の提供に切り替えるステップをさらに含む。
【0024】
いくつかの構成では、前記入力デバイスが外部マウスである。さらに、前記ユーザデバイスがBluetooth(登録商標)通信を介して前記外部マウスと通信する。さらに、前記ユーザデバイスがコンピュータ化されたネットワークを介して前記リモートデスクトップセッションと通信する。
【0025】
別の実施形態は、入力デバイスからの入力を処理する命令セットを格納する非一時的なコンピュータ可読媒体を有するコンピュータプログラム製品を対象とする。命令セットは、ユーザデバイスによって実行されると、命令セットが、
(A)前記入力デバイスからの入力を、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供することと、
(B)前記ユーザデバイス上の、リモートデスクトップセッションの無効化を示すイベントを検出することと、
(C)前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して前記入力デバイスからの入力の処理を継続可能にすることと、
を前記ユーザデバイスに実行させる。
【0026】
さらに別の実施形態は、タッチスクリーンと、メモリと、前記タッチスクリーン及びメモリに結合された制御回路と、を備えるユーザデバイスを対象とする。前記制御回路によって実行された場合に、前記制御回路に、
(A)前記入力デバイスからの入力を、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションに提供させ、
(B)前記ユーザデバイス上の、前記リモートデスクトップセッションの無効化を示すイベントを検出させ、
(C)前記イベントの検出に応答して、前記入力デバイスからの入力を、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションに提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを使用して前記入力デバイスからの入力の処理を継続可能にさせる命令を前記メモリが格納する。
【0027】
なお、クラウド環境では、いくつかの電子回路は、ネットワーク上に分散している可能性のあるリモートコンピュータリソースによって形成されていることを理解すべきである。このようなコンピュータ化された環境は、ホストされたサービスおよびリソース(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど)の分散や強化されたスケーラビリティといった特定の利点を提供することが可能である。
【0028】
別の実施形態は、入力デバイスからユーザデバイスを制御する方法を対象とする。本方法は、
(A)前記入力デバイスから前記ユーザデバイスに第1の入力を提供して、前記ユーザデバイスから離れた機器でホストされるリモートデスクトップセッションを制御するステップと、
(B)前記入力デバイスから前記ユーザデバイスに第2の入力を提供して、前記リモートデスクトップセッションから、前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションへのコンテキスト変更を提供するステップと、
(C)前記コンテキスト変更の後、前記入力デバイスから前記ユーザデバイスに第3の入力を提供して、前記リモートデスクトップセッションの代わりに前記少なくとも一つのローカルアプリケーションを制御するステップと、
を含む。
【0029】
いくつかの構成では、前記第1の入力を提供するステップが、デスクトップクラスポインタ状態で動作して、前記ユーザデバイスにデスクトップクラスポインタの入力を提供するステップを含む。さらに、前記第3の入力を提供するステップが、ネイティブポインタ状態で動作して、前記ユーザデバイスにネイティブポインタの入力を提供するステップを含む。また、本方法は、前記リモートデスクトップセッションから前記少なくとも一つのローカルアプリケーション実行ファイルへのコンテキスト変更により、前記ユーザデバイスがデスクトップクラスポインタモードからネイティブポインタモードに動的に切り替わったことを示す前記ユーザデバイスからのコマンドに応答して、前記デスクトップクラスポインタ状態から前記ネイティブポインタ状態に遷移するステップをさらに含む。
【0030】
いくつかの構成では、本方法は、前記第3の入力を提供した後に、前記入力デバイスから前記ユーザデバイスに第4の入力を提供するステップをさらに含む。このような入力は、前記ユーザデバイス上で実行可能な前記少なくとも一つのローカルアプリケーションから、前記ユーザデバイスから離れた機器上でホストされるリモートデスクトップセッションへの別のコンテキスト変更を提供する。
【0031】
さらに別の実施形態は、本体と、通信インタフェースと、前記本体とともに配置され、前記通信インタフェースと結合される回路と、を備える入力デバイスを対象とする。前記回路は、
(A)前記通信インタフェースを介してユーザデバイスに第1の入力を提供して、前記ユーザデバイスから離れた機器上でホストされるリモートデスクトップセッションを制御し、
(B)前記通信インタフェースを介して前記ユーザデバイスに第2の入力を提供して、前記リモートデスクトップセッションから前記ユーザデバイス上で実行可能な少なくとも一つのローカルアプリケーションへのコンテキスト変更を提供し、
(C)前記通信インタフェースを介して前記ユーザデバイスに第3の入力を提供して、前記リモートデスクトップセッションの代わりに、前記少なくとも一つのローカルアプリケーションを制御するように構成及び配置される。
【0032】
他の実施形態は、電子システムおよびデバイス、処理回路、コンピュータプログラム製品などを対象とする。いくつかの実施形態は、ネイティブポインタモードとデスクトップクラスポインタモードとの間を動的に切り替えることに関する様々な方法、電子部品および回路を対象とする。
【図面の簡単な説明】
【0033】
前述およびその他の目的、特徴及び利点は、同様の参照符号が異なる図面を通して同一の部品を参照する添付図面に示されるように、本開示の特定の実施形態の以下の説明から明らかになるだろう。図面は必ずしも縮尺通りではなく、代わりに本開示の様々な実施形態の原理を説明することに重点が置かれている。
【
図1】特定の実施形態に係るネイティブポインタモードとデスクトップクラスポインタモードとを動的に切り替え可能な少なくとも一つのユーザデバイスを有するコンピューティング環境のブロック図である。
【
図2】特定の実施形態に係るコンピューティング環境のユーザデバイスによって実行される手順のフローチャートである。
【
図3】特定の実施形態に係る詳細な手順のフローチャートである。
【
図4】特定の実施形態に係るユーザデバイスをネイティブポインタモードに切り替える手順を示すフローチャートである。
【
図5】特定の実施形態に係るユーザデバイスをデスクトップクラスポインタモードに切り替える手順を示すフローチャートである。
【
図6】特定の実施形態に係るコンピューティング環境のユーザデバイスに適した電子機器のブロック図である。
【
図7】特定の実施形態に係るコンピューティング環境のリモートセッション機器に適した仮想化サーバのブロック図である。
【発明を実施するための形態】
【0034】
改良された技術は、外部マウスなどの入力デバイスからの入力を処理する際に、ユーザデバイス(スマートフォン、タブレット、タッチスクリーンを搭載したラップトップ、その他のモバイルデバイスやタッチデバイスなど)をネイティブポインタモードとデスクトップクラスポインタモードとの間で動的に切り替えることを対象とする。このような切り替えは、リアルタイムで発生し、検出されるコンテキスト変更(リモートデスクトップセッションの確立/終了、ローカルアプリケーションとリモートデスクトップセッションとの間におけるフォーカスの切り替えなど)などのイベントに応じて行われることがある。さらに、このようなポインタモードの切り替えは、ユーザに負担をかけずに透過的/自動的に行うことができる。
【0035】
ここに開示された特定の実施形態、例および実装の個々の特徴は、技術的に意味のある任意の所望の方法で組み合わせることができる。さらに、そのような特徴は、そのような組み合わせ、順列および/または変形が明示的に除外されているか、または非実用的である範囲を除いて、可能なすべての組み合わせ、順列および変形を形成するために、ここでこのように組み合わせられる。そのような組み合わせ、順列および変形に対するサポートは、本文献に存在すると考えられる。
【0036】
図1は、特定の実施形態に係るネイティブポインタモードとデスクトップクラスポインタモードとを動的に切り替え可能な少なくとも一つのユーザデバイスを有するコンピューティング環境20を示している。コンピューティング環境20は、ユーザデバイス22(1),22(2),...(総称して、ユーザデバイス22)、入力デバイス24(1),24(2),...(総称して、入力デバイス24)、リモートセッション機器26、ストアフロントサーバ28、その他の機器30および通信媒体32を備えている。
【0037】
ユーザデバイス22は、タッチスクリーンを備え、有用な作業を行うように構成及び配置されている。例えば、ユーザは、ローカルアプリケーション、仮想デスクトップクライアントまたは他のワークスペーススタイルのアプリケーションをインストールおよび/または制御するために、タッチスクリーンを介してユーザ入力を行うことができる。
【0038】
入力デバイス24は、ユーザデバイス22上で実行されている様々なアプリケーションを制御するために、ユーザデバイス22にユーザ入力を提供するように構成および配置されている。以下でさらに詳細に説明するように、入力デバイス24は、ユーザデバイス22の外部にあってもよく、ローカルアプリケーションだけでなくリモートデスクトップセッションも制御するように備えられている。このため、入力デバイス24は、(標準的なポインタ入力を提供する)ネイティブポインタ状態または(拡張されたポインタ入力を提供する)デスクトップクラスポインタ状態のいずれかで選択的に動作する回路を備えることによって、単純なハードウェア周辺デバイスを超えて提供される(または増強される)。入力デバイス24の特定の状態は、対になって接続されたユーザデバイス22からのコマンド/信号(例えば、入力デバイス24をネイティブポインタ状態からデスクトップクラスポインタ状態に遷移させる第1のコマンドと、入力デバイス24をネイティブポインタ状態に戻すように遷移させる第2またはリセットコマンド)によって制御されてもよい。
【0039】
図1に示すように、入力デバイス24(1)は、ユーザデバイス22(1)にポインタ入力を提供し、入力デバイス24(2)は、ユーザデバイス22(2)にポインタ入力を提供する、などである。いくつかの構成では、入力デバイス24と各ユーザデバイス22との間の通信は、無線(例えば、Bluetooth通信および/または他のRF技術によって促進される)である。
【0040】
特定の実施形態によれば、入力デバイス24は、ネイティブ(または標準/デフォルト)ポインタ状態やデスクトップクラス(または拡張/専用プロトコル)ポインタ状態などの異なる状態で動作することができる。ネイティブポインタ状態では、入力デバイス24は、ユーザデバイスローカルアプリケーションを制御するための標準ポインタ入力を提供する。デスクトップクラスのポインタ状態では、入力デバイス24は、リモートデスクトップセッションを制御するための拡張ポインタ入力を提供する。入力デバイス24によって提供されるポインタ信号のさらなる詳細は、追って提供する。
【0041】
リモートセッション機器26は、リモートデスクトップやワークスペース、リモートでホストされたアプリケーション、リモート仮想マシン、リモートセッションプラットフォームなどのリモートデスクトップセッションリソースへのアクセスを提供するように構築及び配置されている。例えば、ユーザは、ユーザデバイス22上で仮想デスクトップクライアント(または同様のワークスペーススタイルのアプリケーション)を実行して、リモートセッション機器によって提供されるリモートデスクトップにアクセスすることができる。このような状況では、リモートデスクトップは、ドキュメントエディタ、電子メールクライアント、カレンダーツール、ウェブブラウザなどの様々なリモートデスクトップアプリケーションを含み得る。
【0042】
ストアフロントサーバ28は、ユーザが様々なアプリケーション(例えば、仮想デスクトップクライアントソフトウェア、他のホストされた仮想化サービスにアクセスするためのソフトウェア、他のエンタープライズアプリケーションなど)にアクセスするためのインタフェース(例えば、ストアフロントウェブサイト)を提供するように構築および配置されている。したがって、ユーザデバイス22は、ストアフロントサーバ28を介して、様々なリソースへのアクセスをダウンロード、インストール、登録、購読および/またはその他の方法で取得することができる。
【0043】
他の機器30は、コンピューティング環境20内に存在する他の機器/装置(例えば、電子メールサーバ、ファイルサーバ、データベースサーバ、ウェブサイト、リモートデスクトップにサービスおよび/またはコンテンツを提供する他の機器など)を表している。このような他の機器は、異なる場所に分散されていてもよく、データセンター内に位置されていてもよく、クラウドベースであってもよく、それらの組み合わせなどであってもよい。
【0044】
通信媒体32は、コンピューティング環境20の様々なコンポーネントを共に接続して、これらのコンポーネントが電気信号34(例えば、二重矢印34参照)をやりとりできるように構成および配置されている。通信媒体32の少なくとも一部は、通信媒体32が、バックボーン、ハブアンドスポーク、ループ、イレギュラー、それらの組み合わせなどを含む様々な異なるトポロジーを有することが可能であることを示すために、クラウドとして図示されている。それに伴い、通信媒体32は、銅ベースのデータ通信デバイスおよびケーブリング、光ファイバデバイスおよびケーブリング、ワイヤレスデバイス、それらの組み合わせなどを備えることができる。さらに、通信媒体32は、イーサネットベースの通信、セルラー通信、POTS(Plain Old Telephone Service)通信、それらの組み合わせなど、様々な通信方式をサポートすることができる。
【0045】
いくつかの状況では、コンピューティング環境20の少なくとも一部は、スケーラビリティ、負荷分散、フォールトトレランスなどのために仮想マシン(VM)を実行する仮想化プラットフォームを利用する。いくつかの構成では、コンピューティング環境20の一つまたは複数のコンポーネント(例えば、仮想化サーバ26、ストアフロントサーバ28など)は、仮想化プラットフォームを利用するデータセンター(例えば、一つまたは複数のデータセンターサーバでホストされている)に配置されている。
【0046】
説明のみを目的として、入力デバイス24は、時に、マウス入力を提供する外部マウスデバイスの意味で説明されることがある。しかし、トラックボール、トラックパッド、トラックポイント、ジョイスティック、静電容量感知およびスタイラスを備えたデバイス、それらの組み合わせなど、他の周辺デバイス(およびそのそれぞれのポインタ入力)も同様に、これらの入力デバイス24に対して使用するのに適していることを理解すべきである。
【0047】
コンピューティング環境20の操作中、ユーザはユーザデバイス22を操作して有用な作業を行う。このような作業には、ユーザデバイス22のタッチスクリーンを操作することが含まれてもよい。それに伴い、ユーザは、タッチスクリーンを介してユーザ入力(例えば、フィンガージェスチャ)を入力し、同時にタッチスクリーン上のユーザ出力(例えば、テキストを読む、ビデオを見るなど)を表示してもよい。
【0048】
さらに、ユーザは、入力デバイス24を操作して、ユーザデバイス22にユーザ入力を提供することができる。外部マウスの場合、ユーザデバイス22(1)のユーザは、ユーザデバイス22(1)を介してアクセスされるアプリケーションを制御するために、外部マウス24(1)を動かしたり、外部マウス24(1)のボタンを押したり離したりすることができる。同様に、ユーザデバイス22(2)のユーザは、外部マウス24(2)を使ってユーザデバイス22(2)を操作するなどしてもよい。同時に、ユーザデバイス22のタッチスクリーンは、タッチスクリーンの入力に応じてユーザ出力を表示してもよい。
【0049】
外部マウス(または他のタイプの周辺機器)24を使用してユーザデバイス22を制御している間、ユーザは、ローカルアプリを実行するためにユーザデバイス22を操作するだけでなく、リモートセッション機器26とのリモートデスクトップセッションを確立することができる。リモートデスクトップセッションが確立されると、ユーザは、リモートセッション機器26によってホストされるリモートデスクトップを利用することができる。すなわち、ユーザデバイス22のタッチスクリーン上で、ユーザは、リモートセッション機器26によって提供されるリモートデスクトップグラフィックスストリームのリモートデスクトップ画像を見ることができる。さらに、ユーザは、リモートデスクトップを制御して有用な作業を行うために、ユーザ入力(例えば、テキスト、スクリーン座標など)を入力することができる。ユーザデバイス22がモバイルデバイス(例えば、スマートフォン、タブレット、ラップトップなど)である構成では、ユーザは、ユーザデバイス22を携帯して、様々な異なる場所(例えば、オフィス、自宅、カフェなどの公共の場、他社の会場など)で作業を行うことができる。
【0050】
そのような動作中、ユーザデバイス22は、コンテキスト変更などの特定のイベントに基づいて、ネイティブポインタ動作を提供するネイティブポインタモードと、デスクトップクラスポインタ動作を提供するデスクトップクラスポインタモードとの間で動的に切り替えるように構成および配置される。好適なコンテキスト変更には、仮想デスクトップクライアントをローカルアプリケーション上にフォーカス移動させること、ローカルアプリケーションを仮想デスクトップクライアント上にフォーカス移動させること、仮想デスクトップクライアントを起動させること、および仮想デスクトップクライアントを終了させることが含まれる。他のイベントも同様に使用できる。このような動的な切り替えにより、ユーザは、異なるアプリケーション間をナビゲートしながらユーザデバイス22をモード間において手動で移行させる必要がなく、これは、さもなければ負担になり、かつ/または誤りを起こし易い。さらなる詳細は、
図2を参照して提供される。
【0051】
図2は、特定の実施形態に係る一定期間にわたってユーザデバイス22によって実行される手順100を示す。手順100は、ユーザがユーザデバイス22をあるポインタモードから別のポインタモードに手動で移行させる必要性を軽減する。
【0052】
102において、ユーザデバイス22は、ネイティブポインタモード(例えば、ネイティブマウスモード)で動作する。102に入る破線矢印によって図示されるように、ユーザデバイス22は、起動、コンテキスト変更、ユーザ制御に応じてネイティブポインタモードに手動で切り替えることなどに応じて、ネイティブポインタモードに入ることができることを理解すべきである。
【0053】
102の間、ユーザデバイス22は、入力デバイス24が標準ポインタ入力を提供するためのネイティブポインタ状態にある間に、入力デバイス24からポインタ信号を受信する。標準ポインタ入力に応答して、ユーザデバイス22は、ユーザデバイス22のタッチスクリーン上で見ることができる標準ポインタ動作を提供する。このような標準ポインタ動作は、タッチスクリーン上にネイティブポインタ(すなわち、丸いカーソルの画像)を出力すること、入力デバイス24の移動に応じてタッチスクリーン上のネイティブポインタを移動させること、標準ポインタ入力を有効にしてユーザデバイス22上でローカルに実行されている一つまたは複数のアプリケーションを制御することなどを含んでもよい。この間も、ユーザデバイス22は、タップ、スワイプ、2本指スワイプ、補助的または複雑なタッチスクリーンのジェスチャにマッピングされた単純なタッチスクリーンのジェスチャなど、タッチスクリーン上で提供されるジェスチャに応答することができる。
【0054】
104において、ユーザデバイス22は、ネイティブポインタモードからデスクトップクラスポインタモードに動的に切り替わる。前述したように、このような移行は、仮想デスクトップクライアントアプリケーションを起動する、リモートデスクトップセッションを確立するというようなコンテキスト変更の検出によってトリガされ得る。このような状況では、ユーザデバイス22は、もはやローカルアプリケーションにフォーカスを提供せず、代わりにリモートデスクトップセッションにフォーカスを提供する。ここで、仮想デスクトップクライアントは、フォーカスがリモートデスクトップセッションにあることを決定し、モード遷移を実行する。さらなる詳細は、
図3に関連して追って提供される。
【0055】
106において、ユーザデバイス22は、入力デバイス24がデスクトップクラスのポインタ状態にある間に、入力デバイス24からポインタ信号を受信して、拡張ポインタ入力を提供する。外部マウスの場合、ユーザデバイス22は、外部マウスが送信する標準サービス識別子に基づいて、外部マウスがネイティブマウス状態であるか、デスクトップクラスマウス状態であるかを判定する(例えば、ユーザデバイス22は、標準サービス識別子が存在する場合には、外部マウスがネイティブマウス状態であると認識し、標準サービス識別子が存在しない場合には、デスクトップクラスマウス状態であると認識する)。
【0056】
拡張ポインタ入力に応答して、ユーザデバイス22は、標準ポインタ動作の代わりにデスクトップクラスのポインタ動作を提供する。これに伴い、ユーザデバイス22は、タッチスクリーン上のネイティブポインタを非表示にし(または、もはや表示しない)、デスクトップクラスポインタ入力を、ユーザがユーザデバイスおよび入力デバイス24を使用してデスクトップクラス環境にアクセスすることを可能にするデスクトップクラス(またはスタイル)インタフェースに送る。デスクトップクラス環境は、リモートセッション機器にホストされる一連のリモートデスクトップセッションリソースを制御するためのリモートデスクトップ(または仮想化)セッションを含んでもよい。これに伴い、デスクトップクラスポインタ入力は、ネイティブポインタとは異なる外観を有するデスクトップクラスポインタの、タッチスクリーン上における移動を制御してもよい。
【0057】
特定の実施形態によれば、デスクトップクラスポインタは、ユーザデバイス22がデスクトップクラスポインタモードに常駐している間に、リモートセッション機器26がポインタとしてレンダリングするためにユーザデバイス22に提供する画像(例えば、矢印)である。ユーザデバイス22は、入力デバイス24の動きに応じて(すなわち、拡張ポインタ入力からのポインタ座標データに応じて)、この画像をタッチスクリーン内で移動させる。そうしている間に、ユーザデバイス22は、他のポインタイベント(例えば、マウスボタンの押下など)と共にポインタ座標データをリモートセッション機器26に送信し、リモートデスクトップセッションを制御するための入力デバイス24の操作を可能にする。
【0058】
108において、ユーザデバイス22は、デスクトップクラスのポインタモードからネイティブポインタモードに動的に切り替わる。ここでも、このような移行は、リモートデスクトップセッションをバックグラウンドに移動させる、リモートデスクトップセッションを閉じる/終了させるなどのコンテキスト変更の検出によってトリガされ得る。ここで、仮想デスクトップクライアントは、フォーカスがリモートデスクトップセッションから(例えば、ローカルアプリケーションに)取り除かれたことを決定し、ユーザデバイス22をネイティブポインタモードに自動的に移行させる。
【0059】
108を出る破線矢印で図示されるように、手順100は、再びネイティブポインタモードで動作する(すなわち、102に戻る)などのさらなるアクティビティを含んでもよい。さらに、手順100は、ユーザがユーザデバイス22を制御している間、繰り返し行われてもよいことを理解すべきである。次に、
図3を参照して、さらなる詳細を説明する。
【0060】
図3は、特定の実施形態に係る、ユーザデバイス22がリモートセッション機器26(
図1)とのリモートデスクトップセッションを確立することを可能にする仮想デスクトップクライアントに従って動作するときにユーザデバイス22によって実行される詳細な手順200を示している。先に、このような仮想デスクトップクライアントのソフトウェアは、コンピューティング環境20内の別のデバイス(例えば、
図1のストアフロントサーバ28を参照)からダウンロードされてインストールされてもよいと説明されたことを思い出されたい。
【0061】
202では、ユーザデバイス22は、仮想デスクトップクライアントを起動する。例えば、ユーザは、ユーザデバイス22のタッチスクリーン上の仮想デスクトップクライアント用のアイコンをタップすることにより、仮想デスクトップクライアントアプリケーションを起動(または開始)することができる。この時点で、仮想デスクトップクライアントは、ユーザデバイス22上で実行されているが、仮想デスクトップクライアントは、まだリモートセッション機器26との間でリモートデスクトップセッションを確立していない。その後、ユーザデバイス22は204に進む。
【0062】
204において、仮想デスクトップクライアントの起動に応答して、ユーザデバイス22は、ネイティブポインタモードに切り替える。ここで、ユーザデバイス22は、入力デバイス24と接続し(入力デバイス24との接続がまだ存在しない場合)、入力デバイス24がデスクトップクラスポインタ状態ではなくネイティブポインタ状態で動作するように、入力デバイス24をリセットする。なお、リモートデスクトップセッションがまだ存在していないので、ユーザデバイス22はまだデスクトップクラスのポインタモードに切り替わっていないことを理解すべきである。ユーザデバイス22がネイティブポインタモードに切り替わると、ユーザデバイス22は206に進む。
【0063】
206において、ユーザデバイス22は、リモートデスクトップセッションを確立して、ユーザにリモートデスクトップを提供する。このような確立は、セキュリティの目的でリモートセッション機器26(
図1)で認証するなど、一つ以上の付加的な操作を含んでもよい。その後、ユーザデバイス22は208に進む。
【0064】
208では、リモートデスクトップセッションが確立された状態で、ユーザデバイス22は、ユーザに不必要な負担をかけずに、ネイティブポインタモードからデスクトップクラスポインタモードに動的に切り替わる。ここで、ユーザデバイス22は、デスクトップクラスポインタ状態で動作するように(例えば、入力デバイス24にコマンドを送信することにより)入力デバイス24を構成する。これに応答して、入力デバイス24は、ユーザデバイス22がリモートデスクトップセッションのためのポインタ入力を適切に識別できるように、ポインタ信号内に一つまたは複数の専用のプロトコルインジケータおよび/または関連データを提供してもよい。これに伴い、ポインタ信号は、クリア/セットされるビット、または特定のビットマップパターン(例えば、外部マウス用の標準サービス識別子がない)を含むフィールドを含んでもよい。この時点で、ユーザは、入力デバイス24を用いて仮想デスクトップクライアントを制御し、リモートデスクトップを介して有用な作業を行うことができる。これに伴い、ユーザは、リモートデスクトップを介して、ファイルの編集、電子メールの送受信、異なるウェブサイト間を移動するためのウェブインタフェースの操作、データベースへのアクセスなどを行うことができる。
【0065】
ある時点で、208にいる間に、ユーザデバイス22は、様々な異なるイベントに応答して、デスクトップクラスポインタモードから移行し、ネイティブポインタモードに戻ってもよい。いくつかのイベントは、ユーザデバイス22が、デスクトップクラスポインタモードからネイティブポインタモードへと、透過的かつ自動化された方法で動的に切り替えることを可能にすることができる。
【0066】
210において、ユーザデバイス22は、ユーザが仮想デスクトップクライアントを終了させる(すなわち、ユーザによって仮想デスクトップクライアントが閉じられる)イベントを検出する。例えば、外部マウスの場合、ユーザは、ボタン(または他のオブジェクト)をマウスクリックしたり、タッチスクリーン上のメニューオプションを選択したりして、仮想デスクトップクライアントを閉じることができる。このような状況では、210において、ユーザデバイス22は、終了命令を検出し、リモートデスクトップセッションを閉じて、212に進む。
【0067】
212では、ユーザデバイス22がまだデスクトップクラスポインタモードにあるので、ユーザデバイス22は、デスクトップクラスポインタモードからネイティブポインタモードに動的に切り替わる。このプロセスの一部として、ユーザデバイス22は、入力デバイス24がデスクトップクラスポインタ状態ではなくネイティブポインタ状態で再び動作するように、リセット信号または専用のコマンドを入力デバイス24に送信してもよい。このようなリセットにより、ユーザデバイス22のオペレーティングシステムは、ローカルアプリケーションなどのためにポインタ入力を使用することができる。その後、ユーザデバイス22は214に進む。
【0068】
214において、ユーザデバイス22は、仮想デスクトップクライアントを終了させる(例えば、閉じる、終了させるなど)。この時点で、仮想デスクトップクライアントは、ユーザデバイス22上ではもはや実行されていない。それにもかかわらず、ユーザは、入力デバイス24を介して、ユーザデバイス22上で実行されている一つまたは複数のローカルアプリケーションを制御することができる。さらに、ユーザは、仮想デスクトップクライアントを再起動して、手順200を再び実行してもよい。
【0069】
208では、ユーザが仮想デスクトップクライアントの終了を希望していないと仮定している。代わりに、ユーザが確立されたリモートデスクトップセッションを維持し、かつ仮想デスクトップクライアントをバックグラウンドに置くことを希望しているとする。
【0070】
216において、ユーザデバイス22は、仮想デスクトップクライアントが非アクティブにされ、バックグラウンド(すなわち、ここでは仮想デスクトップクライアントがフォーカスから外れて移動し、したがってイベントを受信しない)に移動させるイベントを検出する。例えば、ユーザがタッチスクリーンをタップしてローカルアプリケーションを起動することがある。このような操作により、ローカルアプリケーションが仮想デスクトップクライアントよりもフォーカスされる(すなわち、仮想クライアントアプリケーションがバックグラウンドに配置される)。その後、ユーザデバイス22は、218に進む。
【0071】
218において、ユーザデバイス22は仮想デスクトップクライアントをバックグラウンドにしたが、ユーザデバイス22は現在デスクトップクラスポインタモードであるため、ユーザデバイス22はネイティブポインタモードに移行する。前述したように、このような動作は、入力デバイス24がデスクトップクラスのポインタ状態ではなく、ネイティブポインタ状態で動作するように、入力デバイス24をリセットすることを含む。その結果、ユーザデバイス22のオペレーティングシステムは、ポインタ入力にアクセスすることができ、ユーザは、仮想デスクトップクライアントをバックグラウンドに維持する入力デバイス24を使用して、ユーザデバイス22上で実行されている一つまたは複数のローカルアプリケーションを操作することができるようになる。
【0072】
後のある時点で、ユーザは、仮想デスクトップクライアントがバックグラウンドで動作している間に仮想デスクトップクライアントを終了したいと思うか、または、代わりに仮想デスクトップクライアントにフォーカスを戻したいと思うことがある。ユーザが(例えば、ボタンをクリックするなどにより)仮想デスクトップクライアントの終了を指示すると、ユーザデバイスは220に進む。
【0073】
220では、ユーザデバイス22は、仮想デスクトップクライアントを閉じるコマンドを受信する。このような状況では、ユーザデバイス22は、既にネイティブポインタモードであり、単にリモートデスクトップセッションを閉じ、214に進み、ユーザデバイス22は、仮想デスクトップクライアントを終了する。
【0074】
一方、222において、ユーザが代替的に仮想デスクトップクライアントにフォーカスを戻すことを望む場合、ユーザは仮想デスクトップクライアントをフォーカスに戻してもよい。具体的には、ユーザデバイス22は、仮想デスクトップクライアントをアクティブにする(すなわち、仮想デスクトップクライアントをフォアグラウンドに配置する)コマンドを受信し、208に進む。例えば、ユーザは、仮想デスクトップクライアントをクリックしてフォアグラウンドにし、休止状態から目覚めさせてもよい。
【0075】
ユーザは、ローカルアプリケーションから仮想デスクトップクライアントに繰り返しフォーカスを切り替えることができることを理解すべきである。そのような操作は、208、216、218、222および208に戻る間の矢印のループによって図示される。ここで、ユーザデバイス22は、ユーザ入力に基づいて、異なるポインタモード間で複数回、動的に移行してもよい。
【0076】
208において、ユーザは、リモートデスクトップセッションを閉じたいが、仮想デスクトップアプリケーションは存続させたいと思うことがある。ここで、ユーザは、リモートデスクトップセッションを終了するが、ユーザデバイス22上で仮想デスクトップクライアントを実行したままにするセッション終了コマンドを入力することができる。この状況では、ユーザデバイス22は、208から224に進む。
【0077】
224において、ユーザデバイス22は、ユーザデバイス22にリモートデスクトップセッションの終了またはクローズを指示するイベントまたはユーザ入力を検出し、例えば、ユーザデバイス22は、セッション終了コマンドを受信する。これに応答して、ユーザデバイス22は、リモートセッションを終了するが、仮想デスクトップクライアントは終了しない。その後、ユーザデバイス22は、224から204に進み、ユーザデバイス22は、デスクトップクラスポインタモードからネイティブポインタモードに戻るように切り替わる。
【0078】
リモートデスクトップセッションが確立されていない状態で仮想デスクトップクライアントがバックグラウンドにある場合、ユーザはユーザデバイス22上で一つまたは複数のローカルアプリケーションを操作することができることを理解すべきである。例えば、226において、ユーザデバイス22は、ネイティブポインタモードに常駐し、入力デバイス24からローカルアプリケーションにポインタ入力を提供する。この間、仮想デスクトップクライアントは、バックグラウンド(すなわち、動作しているが休止状態)にあり、ユーザがリモートデスクトップセッションの確立を希望する場合、ユーザが利用可能である。実際、ユーザが仮想デスクトップクライアントをフォアグラウンドに移動させると(すなわち、フォーカスに合わせると)、ユーザデバイス22は228に進む。
【0079】
228において、仮想デスクトップクライアントは、フォアグラウンドにある(すなわち、休止状態から覚醒し、フォーカスされ、イベントを受信する)。しかし、リモートデスクトップセッションが確立されていない(または開かれていない)ため、ユーザデバイス22は、ネイティブポインタモードのままである。いくつかの構成では、仮想デスクトップクライアントがフォアグラウンドに移動するたびに、仮想デスクトップクライアントは、実行中のリモートデスクトップセッションがあるかどうかをチェックし、ここでは実行中のリモートデスクトップセッションがないので、仮想デスクトップクライアントは、ネイティブポインタモードから切り替わらない。
【0080】
ユーザデバイス22がネイティブポインタモードのままである間に、ユーザデバイス22は、仮想デスクトップクライアントをバックグラウンドまたはフォアグラウンドに移動させ続けることができることを理解すべきである。そのようなアクティビティは、226と228の間の矢印によって示される。
【0081】
226および228から220への矢印によって示されるように、ユーザは最終的に仮想デスクトップクライアントを終了させることができることをさらに理解すべきである。具体的には、220において、ユーザデバイス22は、終了命令を検出し、214に進み、ユーザデバイス22は、仮想デスクトップクライアントを終了する。
【0082】
208にいる間、ユーザデバイス22がデスクトップクラスポインタモードにあり、したがってリモートデスクトップセッションを操作することができることを思い出されたい。この間、例えば、特定の予期せぬまたは不測の事態を処理するために、ユーザが手動制御を課すことを妨げない。
【0083】
例えば、208の間に、ユーザデバイス22は、仮想デスクトップクライアントが不安定になったり、おそらくは予期せずに終了したりするイベントを検出することがある。そのような状況は、208から240、そして214までの破線によって示される。そのような状況では、入力デバイス24は、デスクトップクラスのポインタ状態に未だ存在している可能性がある。
【0084】
しかしながら、この状況に対処するために、ユーザは、入力デバイス24をネイティブポインタ状態に戻す様々な異なるアクティビティを手動で行うことができる。これに伴い、ユーザは、仮想デスクトップクライアントを(202において)再起動してもよく、これにより、ユーザデバイス22が入力デバイス24を(204において)リセットして、入力デバイス24をネイティブポインタ状態に戻してもよい。あるいは、ユーザは、単に入力デバイス24をパワーサイクルする(すなわち、入力デバイス24をオフにして再びオンにする)ことができる。さらに、ユーザデバイス22が専用の入力デバイスリセットアプリ(例えば、ストアフロントサーバ28から取得したもの)を備えている場合、ユーザは、専用の入力デバイスリセットアプリに指示して、入力デバイス24にリセット信号を送信し、入力デバイス24をネイティブポインタ状態に戻すように指示してもよい。次に、
図4および
図5を参照して、さらなる詳細を説明する。
【0085】
図4および
図5は、ユーザデバイス22を特定のポインタモードに動的に切り替えるために、仮想デスクトップクライアントに従って動作中のユーザデバイス22によって実行される手順を示している。
図4は、ユーザデバイス22をネイティブポインタモードに動的に切り替えるための詳細な手順300を示している。
図5は、ユーザデバイス22をデスクトップクラスポインタモードに動的に切り替えるための詳細な手順400を示している。
【0086】
手順300に関連して、ユーザデバイス22は、ネイティブポインタモードに動的に切り替わる。このような切り替えは、手順200の204、212及び218で発生する可能性がある(
図3も参照)。
【0087】
図4に示されるように、302において、ユーザデバイス22は、ユーザデバイス22が入力デバイス24と既に接続されているか否かを判定する。例えば、ユーザデバイス22が202から204に進んでいる場合、ユーザデバイス22はまだ入力デバイス24と接続されていない可能性がある。ユーザデバイス22が入力デバイス24と接続されていない場合、ユーザデバイスは304に進む。しかし、ユーザデバイス22が既に入力デバイス24と接続されている場合、ユーザデバイスは306に進む。
【0088】
304において、ユーザデバイス22は、入力デバイス24と接続する。特定の実施形態によれば、ユーザデバイス22と入力デバイス24は、ディスカバリープロセスから始まる無線による(例えば、RF通信を介する)通信を行う。Bluetoothは、好適な無線通信技術の一例である。ユーザデバイス22が入力デバイス24と接続した後、ユーザデバイス22は306に進む。
【0089】
306において、ユーザデバイス22は、コマンドまたはリセット信号を入力デバイス24に送信する。入力デバイス24は、異なるポインタ状態で動作可能であるため、入力デバイス24がデスクトップクラスのポインタ状態であった場合、入力デバイス24は、デスクトップクラスのポインタ状態から抜けて、ネイティブポインタ状態に入る。その後、ユーザデバイス22は308に進む。
【0090】
308では、ユーザデバイス22が仮想デスクトップクライアントに従って動作しているので、ユーザデバイス22はその後、入力デバイス24との接続を解除する。このような接続の解除により、ユーザデバイス22のオペレーティングシステムが入力デバイス24を使用することができる。
【0091】
310では、ユーザデバイス22がネイティブポインタモードになり、入力デバイス24がネイティブポインタ状態になっている。したがって、ユーザは、入力デバイス24を用いて、ユーザデバイス22上で実行されているローカルアプリケーションを制御することができる。
【0092】
手順400(
図5)に関連して、ユーザデバイス22は、デスクトップクラスのポインタモードに動的に切り替わる。このような切り替えは、手順200の208で発生する(
図3も参照)。
【0093】
図5に示すように、402において、ユーザデバイス22は、入力デバイス24と接続する。前述したように、特定の実施形態によれば、ユーザデバイス22と入力デバイス24は、無線で(例えば、RF通信を介して)通信する。ユーザデバイス22が入力デバイス24と接続した後、ユーザデバイス22は404に進む。
【0094】
404では、ユーザデバイス22は、デスクトップクラスポインタ状態で動作するように入力デバイス24を構成する。ここで、ユーザデバイス22は、ネイティブポインタ状態ではなく、デスクトップクラスポインタ状態で動作するように入力デバイス24に信号を送る。これに伴い、ユーザデバイス22は、デスクトップクラスポインタ状態に入るように入力デバイス24内の回路に指示するコマンドを入力デバイス24に送信する。その後、ユーザデバイス22は406に進む。
【0095】
406において、ユーザデバイス22は、デスクトップクラスポインタモードになり、入力デバイス24は、デスクトップクラスのポインタ状態になる。したがって、入力デバイス24を使用して、ユーザは、ユーザデバイス22上で実行されている仮想デスクトップクライアントを介して、リモートデスクトップセッションを制御することができる。次に、
図6を参照して、さらなる詳細を説明する。
【0096】
図6は、ユーザデバイス22の少なくとも一部として使用するのに適した電子装置500を示している。電子装置500は、リモートデスクトップにアクセスする仮想デスクトップクライアントとして動作するように構成および配置されている。
図6に示されるように、電子装置500は、通信インタフェース502、メモリ504および処理回路506と、一組のユーザインタフェースコンポーネント508と、を備えている。
【0097】
通信インタフェース502は、電子装置500を通信媒体32に接続するように構成及び配置されている(
図1も参照)。したがって、通信インタフェース502は、電子装置500が、リモートセッション機器26やストアフロントサーバ28などのコンピューティング環境20の他の構成要素と通信することを可能にする。このような通信は、ラインベース、無線、それらの組み合わせなどであってもよい。さらに、そのような通信は、様々なプロトコル(例えば、IP、セルラー、光ファイバ、RFなど)を利用してもよい。
【0098】
メモリ504は、揮発性ストレージ(例えば、DRAM、SRAMなど)及び不揮発性ストレージ(例えば、フラッシュメモリ、磁気ディスクドライブなど)の両方を表すように意図されている。メモリ504は、オペレーティングシステム522、デスクトップクラスインタフェースアプリケーション524および異なるポインタモードを動的に切り替えるために専用コード及びデータ526を含む様々なソフトウェア構成要素520を格納している。
【0099】
処理回路506は、メモリ504に格納された様々なソフトウェア構成要素520に従って動作するように構成及び配置されている。具体的には、処理回路506は、オペレーティングシステム522を実行するとき、電子機器500の様々なリソース(例えば、メモリの割り当て、プロセッササイクル、ハードウェアの互換性など)を管理する。さらに、処理回路506は、デスクトップクラスインタフェースアプリケーション524に従って動作するとき、デスクトップクラス環境へのアクセスを提供する専用の制御回路を形成するように構成および配置される。さらに、処理回路506は、専用コードおよびデータ526に従って動作するとき、異なるポインタモードを動的に切り替えるように構成および配置されている、などである。
【0100】
いくつかの実施形態によれば、専用のコードおよびデータ526は、デスクトップクラスインタフェースアプリケーション524と統合される。他の実施形態によれば、専用のコードおよびデータ526およびデスクトップクラスインタフェースアプリケーション524は別個であり、独立して動作してもよく、別々にインストールされてもよい、などである。
【0101】
上述の処理回路506は、専用ソフトウェアを実行する一つまたは複数のプロセッサ(またはコア)、ASIC(Application Specific IC)、FPGA(Field Programmable Gate Array)および関連プログラム、ディスクリート部品、アナログ回路、その他のハードウェア回路、それらの組み合わせなど、さまざまな方法で実装することができることを理解しておく必要がある。ソフトウェアを実行する一つまたは複数のプロセッサの場合、コンピュータプログラム製品540は、ソフトウェアの全てまたは一部を電子装置500に送ることができる。コンピュータプログラム製品540は、電子装置500の一つまたは複数の動作を制御するための命令セットを格納する、非一時的かつ不揮発性のコンピュータ可読媒体を有する。適切なコンピュータ可読記憶媒体の例には、CDROM、フラッシュメモリ、ディスクメモリ、テープメモリなど、不揮発性の方法で命令を記憶する有形の製造品および装置が含まれる。
【0102】
一組のユーザインタフェースコンポーネント508とは、ユーザが電子装置500にユーザ入力を入力すること、および/または電子装置500からユーザ出力を取得することを可能にする様々なユーザ入力/出力(I/O)コンポーネントをいう。特定の実施形態によれば、電子装置500は、タッチスクリーンと、ユーザデバイス22の一部と見なされるか、またはユーザデバイス22とは別個の専用入力デバイス(例えば、拡張Bluetoothマウス、他のタイプの周辺デバイスなど)と、を備えている。
【0103】
動作中、デスクトップクラスインタフェースアプリケーション524を実行する際の処理回路506は、電子装置500がリモートデスクトップセッションを確立することを可能にする専用の回路を形成する。したがって、ユーザは、リモートデスクトップを操作して有用な作業を行うことができる。
【0104】
さらに、専用のコードおよびデータ526に従って実行されるときの処理回路506は、電子装置500が異なるポインタモード間で動的に切り替わることを可能にする専用回路を形成する(例えば、
図3から
図5も参照)。したがって、ユーザは、リモートデスクトップセッションとロケーションアプリケーションとの間で切り替わる際に、電子装置500(すなわち、ユーザデバイス22)および入力デバイス24を手動で構成する必要がない。次に、
図7を参照して、さらなる詳細を説明する。
【0105】
図7は、例示的なデスクトップ仮想化システムの高レベルアーキテクチャを示している。このようなシステムは、リモートセッション機器26の少なくとも一部として使用するのに適している(
図1も参照)。
【0106】
図7に示されるように、デスクトップ仮想化システムは、一つまたは複数のクライアントアクセスデバイス(例えば、ユーザデバイス22)に仮想デスクトップおよび/または仮想アプリケーションを提供するように構成された仮想化サーバ610として動作する少なくとも一つのコンピュータデバイス600を備える、シングルサーバもしくはマルチサーバシステムまたはクラウドシステムであってもよい。本明細書で使用される場合、デスクトップは、一つまたは複数のアプリケーションがホストおよび/または実行され得るグラフィカル環境(例えば、グラフィカルユーザインタフェース)または空間を指してもよい。デスクトップには、ローカルおよび/またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスのユーザインタフェースを提供するグラフィカルシェルが含まれていてもよい。アプリケーションには、オペレーティングシステムのインスタンス(および、オプションでデスクトップも)がロードされた後に実行されるプログラムが含まれていてもよい。オペレーティングシステムの各インスタンスは、物理的(例えば、物理デバイスごとに一つのオペレーティングシステム)であってもよいし、仮想的(例えば、一つの物理デバイス上でOSの多くのインスタンスが実行される)であってもよい。各アプリケーションは、ローカルデバイス上で実行されてもよいし、リモートに配置された(例えば、遠隔の)デバイス上で実行されてもよい。
【0107】
コンピュータデバイス600は、例えば、シングルサーバ、マルチサーバまたはクラウドコンピューティング環境などの仮想化環境における仮想化サーバとして構成されてもよい。
図7に示された仮想化サーバ610は、先に述べたリモートセッション機器26の一つまたは複数の実施形態、または他の既知のコンピューティングデバイスによって展開および/または実装されてもよい。仮想化サーバ610に含まれるものは、一つまたは複数の物理ディスク622、一つまたは複数の物理デバイス624、一つまたは複数の物理プロセッサ626、および一つまたは複数の物理メモリ628を備えることができるハードウェア層620である。いくつかの実施形態では、ファームウェア640は、物理メモリ628のメモリ要素内に格納され、一つまたは複数の物理プロセッサによって実行されてもよい。仮想化サーバ610は、物理メモリ628内のメモリ要素に格納され、一つまたは複数の物理プロセッサ626によって実行されてもよいオペレーティングシステム650をさらに含んでもよい。さらに、ハイパーバイザ660は、物理メモリ328のメモリ要素に格納され、一つまたは複数の物理プロセッサ326によって実行されてもよい。ハイパーバイザ660がハイパーバイザタイプAのハイパーバイザである場合など、オペレーティングシステム650の存在は任意であってもよい。
【0108】
一つまたは複数の物理プロセッサ626上で実行されるのは、一つまたは複数の仮想マシン670A,670B,670C,・・・(一般に、VM670)であってもよい。VM670A,670B,670C,...各仮想ディスク672A,672B,672C,...(一般に、仮想ディスク672)と、各仮想プロセッサ674A,674B,674C,...(一般に、仮想プロセッサ674)とがある。いくつかの実施形態において、第1のVM670Aは、仮想プロセッサ674Aを用いて、ツールスタック682を含む制御プログラム680を実行してもよい。制御プログラム680は、制御仮想マシン、ドメイン0、Dom0、またはシステム管理および/または制御に使用される他の仮想マシンとして参照されてもよい。いくつかの実施形態では、一つまたは複数のVM670B,670C,...は、各仮想プロセッサ674B,674C,...を使用して、ゲストオペレーティングシステム690B,690C,...(一般に、ゲストオペレーティングシステム690)を実行してもよい。
【0109】
物理デバイス624には、例えば、ネットワークインタフェースカード、ビデオカード、入力デバイス(キーボード、マウス、スキャナなど)、出力デバイス(モニタ、ディスプレイデバイス、スピーカ、プリンタなど)、記憶デバイス(光学ドライブなど)、USB(Universal Serial Bus)接続、ネットワーク要素(ルータ、ファイアウォール、ネットワークアドレス変換器、負荷バランサ、VPNゲートウェイ、DHCP(Dynamic Host Configuration Protocol)ルータなど)、または仮想化サーバ610に接続されているか、通信している任意のデバイスが含まれる。ハードウェア層620の物理メモリ628には、いかなるタイプのメモリが含まれていてもよい。物理メモリ628は、データを格納してもよく、いくつかの実施形態では、一つまたは複数のプログラム、または実行可能な命令セットを格納してもよい。
図7は、ファームウェア640が仮想化サーバ610の物理メモリ628に格納されている実施形態を示している。物理メモリ628に格納されたプログラムまたは実行可能な命令は、仮想化サーバ610の一つまたは複数のプロセッサ626によって実行されてもよい。
【0110】
仮想化サーバ610は、ハイパーバイザ660も備えていてもよい。いくつかの実施形態では、ハイパーバイザ660は、任意の数の仮想マシン670を作成および管理するために、仮想化サーバ610上のプロセッサ626によって実行されるプログラムであってもよい。ハイパーバイザ660は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと呼ばれることもある。いくつかの実施形態では、ハイパーバイザ660は、コンピューティングマシン上で実行される仮想マシン670を監視する実行可能な命令とハードウェアとの任意の組み合わせであってもよい。ハイパーバイザ660は、タイプ2ハイパーバイザであってもよく、ハイパーバイザは、仮想化サーバ610上で実行されるオペレーティングシステム650内で実行される。そして、仮想マシンは、ハイパーバイザ660の上の層で実行されてもよい。いくつかの実施形態において、タイプ2ハイパーバイザは、タイプ2ハイパーバイザがユーザのオペレーティングシステムと相互作用するように、ユーザのオペレーティングシステムのコンテキスト内で実行されてもよい。他の実施形態では、仮想化環境内の1つまたは複数の仮想化サーバ610は、代わりに、タイプ1ハイパーバイザ(図示せず)を含んでもよい。タイプ1ハイパーバイザは、ハードウェア層610内のハードウェアおよびリソースに直接アクセスすることによって、仮想化サーバ610上で実行されてもよい。すなわち、図示のように、タイプ2ハイパーバイザ660がホストオペレーティングシステム650を介してシステムリソースにアクセスするのに対し、タイプ1ハイパーバイザは、ホストオペレーティングシステム610を介さずに、すべてのシステムリソースに直接アクセスし得る。タイプ1ハイパーバイザは、仮想化サーバ610の1つまたは複数の物理プロセッサ626上で直接実行されてもよく、物理メモリ628に格納されたプログラムデータを含んでいてもよい。
【0111】
ハイパーバイザ650は、いくつかの実施形態では、オペレーティングシステム690または制御プログラム680がシステムリソースに直接アクセスすることをシミュレートする任意の方法で、仮想マシン670上で実行されるゲストオペレーティングシステム690または制御プログラム680に仮想リソースを提供することができる。システムリソースは、物理デバイス622、物理ディスク624、物理プロセッサ626、物理メモリ628、および仮想化サーバ610のハードウェア層620に含まれる任意の他のコンポーネントを含み得るが、これらに限定されない。ハイパーバイザ660は、仮想ハードウェアをエミュレートし、物理ハードウェアをパーティショニングし、物理ハードウェアを仮想化し、および/またはコンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。さらに他の実施形態では、ハイパーバイザ660は、仮想化サーバ610上で実行される仮想マシン670のプロセッサスケジューリングおよびメモリパーティショニングを制御してもよい。ハイパーバイザ660の例には、カリフォルニア州パロアルトのVMWare社製のもの、オープンソースのXenProject.orgコミュニティによって開発が統括されているオープンソース製品であるXen Project(登録商標)ハイパーバイザ、ワシントン州レドモンドのマイクロソフト社が提供するHyper-V(登録商標)、Virtual Server(登録商標)、Virtual PC(登録商標)ハイパーバイザなどが含まれ得る。いくつかの実施形態では、仮想化サーバ610は、ゲストオペレーティングシステム690が実行可能な仮想マシンプラットフォームを作成するハイパーバイザ660を実行してもよい。これらの実施形態では、仮想化サーバ610は、ホストサーバと呼ばれてもよい。このような仮想化サーバの一例は、フロリダ州フォートローダーデールのシトリックス・システムズ社が提供するCitrix Hypervisor(登録商標)である。
【0112】
ハイパーバイザ660は、ゲストオペレーティングシステム690が実行される1つまたは複数の仮想マシン670を作成してもよい。いくつかの実施形態では、ハイパーバイザ660は、仮想マシン670を作成するために、仮想マシンイメージをロードしてもよい。仮想マシンイメージは、仮想マシンのインスタンスを構成するデータ、状態、命令などの集合体を参照するものであってもよい。他の実施形態では、ハイパーバイザ660は、仮想マシン670内でゲストオペレーティングシステム690を実行してもよい。さらに他の実施形態では、仮想マシン670は、ゲストオペレーティングシステム690を実行してもよい。
【0113】
ハイパーバイザ660は、仮想マシン670の作成に加えて、少なくとも1つの仮想マシン670の実行を制御してもよい。他の実施形態では、ハイパーバイザ660は、仮想化サーバ610によって提供される少なくとも1つのハードウェアリソース(例えば、ハードウェア層610内で利用可能な任意のハードウェアリソース)の抽象化を、少なくとも1つの仮想マシン670に提示してもよい。他の実施形態では、ハイパーバイザ660は、仮想マシン670が仮想化サーバ610で利用可能な物理プロセッサ626にアクセスする方法を制御してもよい。物理プロセッサ626へのアクセスを制御することは、仮想マシン670がプロセッサ626へのアクセスを持つべきかどうかを決定すること、および物理プロセッサの能力をどのように仮想マシン670に提示するかを含むことができる。
【0114】
図7に示されるように、仮想化サーバ610は、1つまたは複数の仮想マシン670をホストまたは実行してもよい。仮想マシン670は、プロセッサ626によって実行されると、仮想マシン670が物理的なコンピューティングデバイスとよく似たプログラムおよびプロセスを実行できるように、物理的なコンピュータの動作を模倣することができる実行可能な命令および/またはユーザデータのセットであってもよい。
図7は、仮想化サーバ610が3つの仮想マシン670をホストする実施形態を示しているが、他の実施形態では、仮想化サーバ610は、任意の数の仮想マシン670をホストしてもよい。ハイパーバイザ660は、いくつかの実施形態において、各仮想マシン670に、メモリ628、プロセッサ626、およびその仮想マシン670が利用可能な他のシステムリソース622、624を含む、物理的ハードウェアの固有の仮想ビューを提供してもよい。いくつかの実施形態では、一意の仮想ビューは、仮想マシンの許可、1つまたは複数の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行されるアプリケーション、仮想マシンによってアクセスされるネットワーク、または他の任意の所望の基準のうちの1つまたは複数に基づいてもよい。例えば、ハイパーバイザ660は、1つまたは複数の安全でない仮想マシン670および1つまたは複数の安全な仮想マシン670を作成してもよい。安全でない仮想マシン670は、安全な仮想マシン670がアクセスを許可される可能性があるリソース、ハードウェア、メモリロケーションおよびプログラムへのアクセスを防止されてもよい。他の実施形態では、ハイパーバイザ610は、各仮想マシン670に、仮想マシン670が利用可能な物理ハードウェア、メモリ、プロセッサおよび他のシステムリソースの実質的に類似した仮想ビューを提供してもよい。
【0115】
各仮想マシン670は、各仮想ディスク672および各仮想プロセッサ674を備えていてもよい。仮想ディスク672は、いくつかの実施形態において、仮想化サーバ610の1つまたは複数の物理ディスク622の仮想化ビュー、または仮想化サーバ610の1つまたは複数の物理ディスク622の一部であってもよい。物理ディスク622の仮想化ビューは、ハイパーバイザ660によって生成、提供および管理されてもよい。いくつかの実施形態では、ハイパーバイザ660は、各仮想マシン670に物理ディスク622の固有のビューを提供してもよい。したがって、これらの実施形態では、各仮想マシン670に含まれる特定の仮想ディスク622は、他の仮想ディスク672と比較して一意的であってもよい。
【0116】
仮想プロセッサ674は、仮想化サーバ610の1つまたは複数の物理プロセッサ626の仮想化ビューであってもよい。いくつかの実施形態では、物理プロセッサ626の仮想化ビューは、ハイパーバイザ660によって生成、提供および管理されてもよい。いくつかの実施形態では、仮想プロセッサ674は、少なくとも1つの物理プロセッサ626の特性と実質的に同じ特性を有してもよい。他の実施形態では、仮想プロセッサ674は、仮想プロセッサ674の特性の少なくとも一部が対応する物理プロセッサ626の特性と異なるように、物理プロセッサ626の修正されたビューを提供してもよい。
【0117】
上述したように、改良された技術には、外部マウスなどの周辺機器からの入力を処理する際に、ユーザデバイス22(例えば、スマートフォン、タブレット、タッチスクリーンを備えたラップトップ、その他のモバイルおよび/またはタッチデバイスなど)を、ネイティブポインタモードとデスクトップクラスのポインタモードとの間で動的に切り替えることが含まれる。このような切り替えは、リアルタイムに発生し検出されるコンテキスト変更などのイベントに応じて行われる。
【0118】
本開示の様々な実施形態を具体的に示し説明してきたが、添付の特許請求の範囲によって定義される本開示の精神および範囲から逸脱することなく、形態および詳細に様々な変更を加えることができることが、当業者には理解されるであろう。
【0119】
例えば、リモートセッション装置26および/またはストアフロントサーバ28(
図1)の様々なコンポーネントは、クラウドに実装されたり、「移動」されたりすることが可能であり、すなわち、ネットワーク上に分散されたリモートコンピュータリソースに実装されることが理解されるべきである。ここで、様々なコンピュータリソースは、緊密に分散されていてもよく(例えば、単一の施設内のサーバファーム)、あるいは比較的大きな距離に分散されていてもよい(例えば、キャンパス内、異なる都市、海岸から海岸までなど)。このような状況では、リソースを接続するネットワークは、バックボーン、ハブ&スポーク、ループ、イレギュラー、それらの組み合わせなど、さまざまな異なるトポロジーを持つことができる。さらに、ネットワークは、銅ベースのデータ通信デバイスおよびケーブル、光ファイバデバイスおよびケーブル、無線デバイス、それらの組み合わせなどを含むことができる。さらに、ネットワークは、LANベースの通信、セルラーベースの通信、それらの組み合わせなどをサポートすることができる。
【0120】
さらに、本明細書および特定の実施形態では、アプリケーションのコンテキスト変更に応じて、ネイティブのタブレットマウスモードとデスクトップマウスモード(または他の入力デバイスの同様のポインタモード)とを動的に切り替える技術が開示されている。 このような実施形態は、特定のモバイルデバイスのオペレーティングシステム(例えば、iOS13、iPadOSなど)で使用するのに適しているかもしれない。
【0121】
上記では、特定のオペレーティングシステムが例として挙げられている場合があることを理解しておくべきである。しかし、ここで開示する特定の技術は、様々なオペレーティングシステムやプラットフォームに適しており、特定のオペレーティングシステムやプラットフォームに縛られたり、依存したりするものではない。
【0122】
さらに、ある実施形態では、ワークスペース(またはリモートセッション/デスクトップ)アプリは、Virtual Apps and Desktopsセッション中に、フロリダ州フォートローダーデールのシトリックス・システムズ社が提供するCitrix X1 Mouseなどの専用マウスまたは拡張マウスを使用する際に、デスクトップマウスモードのサポートを提供することができることを理解しておくべきである。特定のモバイルデバイスのオペレーティングシステムの支援タッチ機能にネイティブのマウス入力が追加されることで、これはコンフリクトを生じさせる。既存のデスクトップマウスモードを継続して使用できるが、アプリ内の他の場所や他のアプリでネイティブマウスの入力ができないようにするか、ネイティブマウスモードをアプリ内のあらゆる場所で使用できるが、仮想セッションで使用される既存のデスクトップマウスモードを排除するかである。
【0123】
このような排他的な性質は、モバイル機器のオペレーティングシステムとBluetoothプロトコルの動作に起因すると考えられる。ネイティブマウスモードで使用される専用マウスにアプリが直接接続すると、ネイティブマウスモードが無効になる。さらに、ワークスペースアプリは、マウスのプロトコルモードを調整することで、デスクトップマウスモードで専用マウスを使用することができ、その結果、モバイル機器のオペレーティングシステムがネイティブマウスモードで専用マウスを使用することができなくなる。
【0124】
このコンフリクトを解決するために、技術的には、必要に応じて2つのモードを切り替えながら、動的/ハイブリッドなマウス操作を確立することができる。
1.アプリケーションがデスクトップモードでマウスを使用する必要がある場合、マウスに接続し、プロトコルモードを設定する。これは、例えば、ユーザがVirtual Apps and Desktopsセッションに参加した場合などに発生する。
2.アプリケーションがネイティブのタブレットモードに戻したい場合、プロトコルモードをリセットし、マウスから切断する。これは、ユーザがVirtual Apps and Desktopsセッションを終了したときや、アプリケーションを終了したときに発生する。
【0125】
これにより、WorkspaceアプリケーションがVirtual Apps and Desktopsセッション内ではデスクトップモードでマウスを使用し、セッション外やアプリケーション外ではモバイルデバイスのオペレーティングシステムがネイティブのタブレットモードでマウスを使用できるようになる。
【0126】
専用マウスのマウスプロトコルモードが正しくリセットされていない可能性がある場合(すなわち、アプリケーションが異常終了した場合など)には、以下のいずれかによりマウスモードをリセットすることで、ネイティブタブレットモードで使用できるようになる。
1.マウスのスイッチを切り、再び入れる。
2.アプリケーションを再起動する。
3.マウスモードが正しくリセットされなかった場合、バックグラウンドのアプリケーションにメインアプリケーションの状態を監視させて、メインアプリケーションの終了時にマウスモードをリセットする。
【0127】
モバイル機器の分割画面でアプリケーションが他のアプリケーションと一緒に動作している場合に対応するため、マウスモードの切り替えには、フォアグラウンド及びバックグラウンドのイベントに加えて、アクティブ化、非アクティブ化のイベントや、マウスポイントの位置のエッジ検出などのトリガが含まれている。
【0128】
Virtual Apps and Desktopsのセッションがアプリ内の分割画面やピクチャインピクチャなどのアプリの一部で行われている場合に対応するため、マウスモードの切り替えには、マウスポインタの位置による領域のアクティブ化及び領域のエッジ検出のトリガが含まれ、このような領域の一方は、Virtual Apps and Desktopsのセッション領域であり、このような領域の他はネイティブアプリの領域である。
【0129】
特定の実施形態によれば、モバイルアプリのユーザコンテキストがタブレットインタフェースとデスクトップインタフェースとの間で切り替わると、マウスモードもネイティブタブレットモードからデスクトップマウスモードに切り替わる。これにより、各インタフェースは、設計されたモードでマウスを利用することができる。
【0130】
さらに、特定の実施形態によると、
1.マウスモードの移行は自動的に行われ、ユーザがそれを開始する必要はない。
2.マウスモードの移行は即座に行われ、ユーザはそれを待つ必要がない。
3.ユーザは、タッチイベントを必要とせずに、モバイルデバイスでマウスを使用することができる。
【0131】
さらに、ここで開示される技術は、ローカルアプリケーションを実行するだけでなく、仮想環境へのアクセスを提供するユーザデバイスにも適している。このような場合、特定の実施形態によれば、ユーザは、ユーザデバイス上で仮想デスクトップクライアントを実行し、仮想デスクトップサーバから提供される仮想デスクトップにアクセスすることができる。仮想デスクトップには、ドキュメントエディタ、電子メールクライアント、ウェブブラウザなど、さまざまな仮想デスクトップアプリケーションが含まれていてもよい。
【0132】
入力デバイスおよび外部マウスという用語は、本明細書内で互換的および/または同義的に使用されている可能性があることを理解すべきである。しかし、いくつかの状況では、1つまたは複数の入力デバイス24は、外部マウスであってもよい。いくつかの状況では、1つまたは複数の入力デバイス24は、外部マウスではなく、トラックボール、トラックパッド、トラックポイント、ジョイスティック、静電容量感知デバイス、スタイラス搭載デバイス、それらの組み合わせなどの異なるタイプのポインタである周辺デバイスであってもよい。例えば、
図1を参照すると、入力装置24(1)は外部マウスであってもよく、入力装置24(2)はトラックポイントデバイスなどであってもよい。このような配置、変更および強化は、本開示の様々な実施形態に属することが意図されている。
【国際調査報告】