(57)【特許請求の範囲】
【請求項１】
ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成するステップと、
前記仮想セッションの生成時に、前記サーバ装置のサーバ・キーボード・レイアウトを前記クライアント装置のクライアント・キーボード・レイアウトに整合させるステップと、
前記サーバ・キーボード・レイアウトが前記クライアント・キーボード・レイアウトに整合した後、前記サーバ装置が前記仮想セッション中に前記サーバ・ベース・ユーザ環境へのアクセスを前記ユーザに提供する間に、前記サーバ装置の前記サーバ・キーボード・レイアウトに従って、前記ユーザからのキーストローク入力を前記サーバ・ベース・ユーザ環境に提供するステップと、
を含む、ユーザ入力を処理するコンピュータ実装方法。
【請求項２】
前記サーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトに整合させるステップが、
前記サーバ装置の最初のサーバ・キーボード・レイアウトのセットを前記クライアント装置の最初のクライアント・キーボード・レイアウトのセットと折衝するためのキーボード結合動作を実行するステップを含む請求項１に記載のコンピュータ実装方法。
【請求項３】
前記キーボード結合動作を実行するステップが、
互換性のあるサーバ・キーボード・レイアウトのセットを識別するキーボード結合要求を前記サーバ装置から前記クライアント装置に伝えるステップと、
前記キーボード結合要求に応答して、互換性のあるクライアント・キーボード・レイアウトのセットとして、前記クライアント装置が互換性のあるサーバ・キーボード・レイアウトの前記セットのうちのどれをサポートできるかを識別するキーボード結合応答を前記クライアント装置から前記サーバ装置に伝えるステップと、
キーボード結合応答に応答して、前記キーボード結合応答内で識別される互換性のあるクライアント・キーボード・レイアウトの前記セットを使用するように前記クライアント装置にコミットさせるキーボード結合コミットメッセージを前記サーバ装置から前記クライアント装置に伝えるステップと、
を含む請求項２に記載のコンピュータ実装方法。
【請求項４】
前記クライアント装置と前記サーバ装置との間に前記仮想セッションを生成するステップが、
コンピュータネットワークを通して前記クライアント装置と前記サーバ装置との間に仮想チャネルを確立するステップを含み、
前記キーボード結合要求、前記キーボード結合応答および前記キーボード結合コミットメッセージが、前記確立された仮想チャネルを通して伝えられる請求項３に記載のコンピュータ実装方法。
【請求項５】
前記サーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトに整合させるステップが、
キーボードレイアウト表示コマンドを前記クライアント装置から受信し、前記キーボードレイアウト表示コマンドに応答して、前記サーバ装置の前記サーバ・キーボード・レイアウトを前記クライアント装置の前記クライアント・キーボード・レイアウトに同期させるためのキーボードレイアウト同期動作を実行するステップを含む請求項３に記載のコンピュータ実装方法。
【請求項６】
前記ユーザからの前記キーストローク入力がある時間期間にわたって前記サーバ・ベース・ユーザ環境に提供された後で、前記サーバ装置の別のサーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトとは異なる前記クライアント装置の別のクライアント・キーボード・レイアウトに整合させるステップを含む請求項１に記載のコンピュータ実装方法。
【請求項７】
前記サーバ装置の前記サーバ・キーボード・レイアウトを前記クライアント装置の前記別のクライアント・キーボード・レイアウトに整合させるステップが、
キーボードレイアウト変更コマンドを前記ユーザから受信し、前記ユーザからの前記キーボードレイアウト変更コマンドに応答して、前記サーバ装置の前記別のサーバ・キーボード・レイアウトを前記クライアント装置の前記別のクライアント・キーボード・レイアウトに同期させるためのキーボードレイアウト変更動作を実行するステップを含む請求項６に記載のコンピュータ実装方法。
【請求項８】
前記クライアント装置が、前記クライアント・キーボード・レイアウトとして、第１の言語用の第１のキー構成を含む第１のクライアント・キーボード・レイアウトを最初に使用し、前記キーボードレイアウト変更コマンドを前記ユーザから受信するステップが、
前記ユーザが前記第１のクライアント・キーボード・レイアウトから、第２の言語用の第２のキー構成を含む第２のクライアント・キーボード・レイアウトに切り替えることに応答して、当該変更を前記サーバ装置に電子的に伝達するステップを含む請求項７に記載のコンピュータ実装方法。
【請求項９】
前記キーボードレイアウト変更動作が実行された後で、前記サーバ装置が前記仮想セッション中に前記サーバ・ベース・ユーザ環境へのアクセスを前記ユーザに提供する間に、前記サーバ装置の前記別のサーバ・キーボード・レイアウトに従って、前記ユーザからのさらなるキーストローク入力を前記サーバ・ベース・ユーザ環境に提供するステップを含む請求項７に記載のコンピュータ実装方法。
【請求項１０】
前記サーバ・キーボード・レイアウトの代わりに前記別のサーバ・キーボード・レイアウトを使用するように各サーバアプリケーションに通知するためのキーボード変更メッセージのセットを、前記サーバ・ベース・ユーザ環境内で実行するサーバアプリケーションのセットにブロードキャストするステップを含む請求項７に記載のコンピュータ実装方法。
【請求項１１】
ユーザ入力を処理するための命令のセットを記憶した非一時的コンピュータ可読媒体を有するコンピュータプログラム製品であって、前記命令のセットが、コンピュータ化回路によって実行されるとき、該コンピュータ化回路に、
ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成し、
前記仮想セッションの生成時に、前記サーバ装置のサーバ・キーボード・レイアウトを前記クライアント装置のクライアント・キーボード・レイアウトに整合させ、
前記サーバ・キーボード・レイアウトが前記クライアント・キーボード・レイアウトに整合した後、前記サーバ装置が前記仮想セッション中に前記サーバ・ベース・ユーザ環境へのアクセスを前記ユーザに提供する間に、前記サーバ装置の前記サーバ・キーボード・レイアウトに従って、前記ユーザからのキーストローク入力を前記サーバ・ベース・ユーザ環境に提供する方法を実行させるコンピュータプログラム製品。
【請求項１２】
前記サーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトに整合させることが、
前記サーバ装置の最初のサーバ・キーボード・レイアウト・セットを前記クライアント装置の最初のクライアント・キーボード・レイアウト・セットと折衝するためのキーボード結合動作を実行することを含む請求項１１に記載のコンピュータプログラム製品。
【請求項１３】
前記方法が、
前記ユーザからの前記キーストローク入力がある時間期間にわたって前記サーバ・ベース・ユーザ環境に提供された後で、前記サーバ装置の別のサーバ・キーボード・レイアウトを前記クライアント装置の別のクライアント・キーボード・レイアウトに整合させることを含む請求項１２に記載のコンピュータプログラム製品。
【請求項１４】
ユーザインターフェースと、
メモリと、
前記ユーザインターフェースおよび前記メモリに結合された制御回路と、
を備え、
前記メモリが命令を記憶し、該命令が、前記制御回路によって実行されるとき、前記制御回路に、
クライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成させ、
前記仮想セッションの生成時に、前記サーバ装置のサーバ・キーボード・レイアウトを前記クライアント装置のクライアント・キーボード・レイアウトに整合させ、
前記サーバ・キーボード・レイアウトが前記クライアント・キーボード・レイアウトに整合した後、前記サーバ装置が前記仮想セッション中に前記ユーザインターフェースを介して前記サーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、前記サーバ装置の前記サーバ・キーボード・レイアウトに従って、前記ユーザインターフェースを介して前記ユーザからのキーストローク入力を前記サーバ・ベース・ユーザ環境に提供させるクライアント装置。
【請求項１５】
前記制御回路が、前記サーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトに整合させるとき、
前記サーバ装置の最初のサーバ・キーボード・レイアウト・セットを前記クライアント装置の最初のクライアント・キーボード・レイアウト・セットに同期させるためのキーボード結合動作を実行するように構築および構成される請求項１４に記載のクライアント装置。
【請求項１６】
前記制御回路が、
前記ユーザからの前記キーストローク入力がある時間期間にわたって前記サーバ・ベース・ユーザ環境に提供された後で、前記サーバ装置の別のサーバ・キーボード・レイアウトを前記クライアント装置の別のクライアント・キーボード・レイアウトに整合させる
ようにさらに構築および構成される請求項１４に記載のクライアント装置。
【請求項１７】
ネットワークインターフェースと、
メモリと、
前記ネットワークインターフェースおよび前記メモリに結合された制御回路と、
を備え、
前記メモリが命令を記憶し、該命令が、前記制御回路によって実行されるとき、前記制御回路に、
ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成させ、
前記仮想セッションの生成時に、前記サーバ装置のサーバ・キーボード・レイアウトを前記クライアント装置のクライアント・キーボード・レイアウトに整合させ、
前記サーバ・キーボード・レイアウトが前記クライアント・キーボード・レイアウトに整合した後、前記サーバ装置が前記仮想セッション中に前記サーバ・ベース・ユーザ環境へのアクセスを前記ユーザに提供する間に、前記サーバ装置の前記サーバ・キーボード・レイアウトに従って、前記ユーザからのキーストローク入力を前記サーバ・ベース・ユーザ環境に提供させるサーバ装置。
【請求項１８】
前記制御回路が、前記サーバ・キーボード・レイアウトを前記クライアント・キーボード・レイアウトに整合させるとき、
前記サーバ装置の最初のサーバ・キーボード・レイアウトのセットを前記クライアント装置の最初のクライアント・キーボード・レイアウトのセットに同期させるためのキーボード結合動作を実行するように構築および構成される請求項１７に記載のサーバ装置。
【請求項１９】
前記制御回路が、
前記ユーザからの前記キーストローク入力がある時間期間にわたって前記サーバ・ベース・ユーザ環境に提供された後で、前記サーバ装置の別のサーバ・キーボード・レイアウトを前記クライアント装置の別のクライアント・キーボード・レイアウトに整合させる
ようにさらに構築および構成される請求項１８に記載のサーバ装置。
【請求項２０】
前記サーバ装置の前記サーバ・キーボード・レイアウトを前記クライアント装置の前記クライアント・キーボード・レイアウトに整合させるステップが、
前記サーバ装置内の専用サーバサイド回路から前記クライアント装置内の専用クライアントサイド回路に、前記サーバ装置によってサポートされるサーバ・サイド・キーボード・レイアウトのセットを識別するキーボード結合要求メッセージを送信するステップと、
前記キーボード結合要求メッセージの受信に応答して、前記クライアント装置内の前記専用クライアントサイド回路が、前記サーバ装置によってサポートされるサーバ・サイド・キーボード・レイアウトの前記セットを前記キーボード結合要求メッセージから読み取ることと、前記クライアント装置が前記サーバ装置によってサポートされる前記サーバ・サイド・キーボード・レイアウトのうちのどれをサポートするように構成されているかを決定することとを行うキーボード査定動作を実行するステップと、
前記クライアント装置内の前記専用クライアントサイド回路から前記サーバ装置内の前記専用サーバサイド回路に、前記サーバ装置によってサポートされる前記サーバ・サイド・キーボード・レイアウトのうちのどれを前記クライアント装置がサポートするように構成されているかを識別するキーボード結合応答メッセージを送信するステップと、
前記キーボード結合応答メッセージの受信に応答して、前記サーバ装置内の前記専用サーバサイド回路が、キーボードレイアウトの観点から前記サーバ装置が前記クライアント装置と互換性があることを確認するキーボード確認動作を実行するステップと、
前記サーバ装置内の前記専用サーバサイド回路から前記クライアント装置内の前記専用クライアントサイド回路に、キーボードレイアウトの特定のセットが前記サーバ装置と前記クライアント装置の両方によってサポートされることを前記専用クライアントサイド回路に知らせるキーボード結合コミットメッセージを送信するステップと、
を含む請求項１に記載のコンピュータ実装方法。
【請求項２１】
前記クライアント装置内の前記専用クライアントサイド回路から前記サーバ装置内の前記専用サーバサイド回路に、現在のクライアント・サイド・キーボード・レイアウトを指定するキーボードレイアウト識別子メッセージを送信するステップと、
前記キーボードレイアウト識別子メッセージの受信に応答して、前記サーバ装置内の前記専用サーバサイド回路が、前記現在のクライアント・サイド・キーボード・レイアトに基づいてデフォルト入力言語を設定するステップと、
前記専用サーバサイド回路が、前記キーボードレイアウト識別子メッセージの受信にさらに応答して、前記クライアント装置からのユーザテキストを前記デフォルト入力言語で入力するように、前記サーバ装置上で実行する複数のサーバ・サイド・アプリケーションに知らせるメッセージを、前記サーバ装置上で実行する前記複数のサーバ・サイド・アプリケーションにブロードキャストするステップと、
を含む請求項２０に記載のコンピュータ実装方法。
【請求項２２】
前記クライアント装置内の前記専用クライアントサイド回路が前記キーボード査定動作を実行するステップが、特定のドライバが前記クライアント装置内に設置されているかどうかに基づいて、前記サーバ装置によってサポートされる前記サーバ・サイド・キーボード・レイアウトのうちのどれを前記クライアント装置がサポートするように構成されているかを決定するステップを含む請求項２０に記載のコンピュータ実装方法。
【発明の詳細な説明】
【背景技術】
【０００１】
デスクトップまたはアプリケーション仮想化は、ユーザがネットワーク上でローカル・クライアント・デバイスをリモート・サーバ・デバイスに接続し、次いで、リモート・サーバ・デバイスによって提供される仮想デスクトップまたは仮想アプリケーション環境にアクセスすることを可能にする。ユーザが仮想デスクトップまたは仮想アプリケーション環境へのアクセスを有すると、ユーザは、有用な作業（たとえば、文書の編集、スライドショーの再生、電子メール確認など）を実行するために、仮想デスクトップまたは仮想アプリケーション環境を使用することができる。
【０００２】
仮想デスクトップまたは仮想アプリケーション環境にテキスト入力を提供するために、ユーザはローカル・クライアント・デバイスのキーボード上でタイプし、ユーザが行うキーストロークが特定の文字（ｃｈａｒａｃｔｅｒ）（たとえば、文字（ｌｅｔｔｅｒ）、数字、記号など）に電子的に変換される。いくつかの状況では（たとえば、デスクトップコンピュータの文脈では）、ローカル・クライアント・デバイスは物理的キーボードを備える。他の状況では（たとえば、タブレットまたはスマートフォンの文脈で）、ローカル・クライアント・デバイスは表示キーボードを提供するタッチスクリーンを備える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ローカル・クライアント・デバイスのタッチスクリーンは最初に、ユーザがリモート・サーバ・デバイスによって提供される仮想デスクトップまたは仮想アプリケーション環境にテキスト入力することを可能にする英語（米国）タッチキーボードを表示すると仮定する。または、ローカル・クライアント・デバイスは物理的キーボードを備えると仮定する。ユーザがローカル・クライアント・デバイスのタッチキーボードまたは物理的キーボード上にタイプするにつれて、ユーザが行うキーストロークは特定の英語文字に適切に変換される。
【０００４】
ローカル・クライアント・デバイスは、ユーザが異なるキーボードレイアウト間で（たとえば、英語キーボードレイアウトから、フランス語キーボードレイアウトに、またはドイツ語キーボードレイアウトに）切り替えることを可能にするように構成されているとさらに仮定する。このキーボード切替え特徴がユーザに利用可能である場合、ユーザは、個人的な選好により、英語キーボードレイアウトから異なるキーボードレイアウトのうちの１つに切り替えることを試みることができる。しかしながら、ローカル・クライアント・デバイス上でキーボード切替えを行った後で、ユーザはリモート・サーバ・デバイスによって提供される仮想デスクトップまたは仮想アプリケーション環境に対して現在どのキーボードが有効であるかについて混乱する場合がある。さらに、ローカル・クライアント・デバイス上でキーボード切替えを行った後で、ユーザが入力したキーストロークがリモート・サーバ・デバイスによって提供される仮想デスクトップまたは仮想アプリケーション環境によって誤解される可能性がある。
【課題を解決するための手段】
【０００５】
改善された技法は、仮想セッション中にサーバ・サイド・キーボード・レイアウトをクライアント・サイド・キーボード・レイアウトに電子的に同期させることに関連する。そのような同期は、どのキーボードレイアウトが現在有効であるかについてユーザの混乱を除く。さらに、そのような同期は、クライアント・サイド・テキスト入力がサーバサイド環境によって誤解されないことを確実にする。したがって、ユーザ経験が大いに改善される。
【０００６】
一実施形態は、ユーザ入力を処理するコンピュータ実装方法に関する。このコンピュータ実装方法は、ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成するステップを含む。この方法は、仮想セッションの生成時に、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置のクライアント・キーボード・レイアウトに整合させるステップをさらに含む。この方法は、サーバ・キーボード・レイアウトがクライアント・キーボード・レイアウトに整合した後で、サーバ装置が仮想セッション中にサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置のサーバ・キーボード・レイアウトに従って、ユーザからのキーストローク入力をサーバ・ベース・ユーザ環境に提供するステップをさらに含む。
【０００７】
いくつかの構成では、サーバ・キーボード・レイアウトをクライアント・キーボード・レイアウトに整合させるステップは、サーバ装置の最初のサーバ・キーボード・レイアウトをクライアント装置の最初のクライアント・キーボード・レイアウトと折衝するためのキーボード結合動作を実行するステップを含む。そのような構成は、ユーザがクライアント・サイド・キーボード・レイアウトに切り替えることを可能にするタッチキーボードを備えるクライアント装置に適している。
【０００８】
いくつかの構成では、キーボード結合動作を実行するステップは、
（ｉ）  互換性のあるサーバ・キーボード・レイアウトのセットを識別するキーボード結合要求をサーバ装置からクライアント装置に伝えるステップと、
（ｉｉ）  キーボード結合要求に応答して、クライアント装置が互換性のあるサーバ・キーボード・レイアウトのセットのどのレイアウトを使用するように現在構成されているかを識別するキーボード結合応答をクライアント装置からサーバ装置に伝えるステップと、
（ｉｉｉ）  キーボード結合応答に応答して、キーボード結合コミットメッセージをサーバ装置からクライアント装置に伝えるステップと
を含む。キーボード結合コミットメッセージは、キーボード結合応答内で識別されるキーボードレイアウトをクライアント装置およびサーバ装置にサポートさせる。
【０００９】
いくつかの構成では、クライアント装置とサーバ装置との間に仮想セッションを生成するステップは、コンピュータネットワークを通してクライアント装置とサーバ装置との間に仮想チャネルを確立するステップを含む。これらの構成では、キーボード結合要求、キーボード結合応答、およびキーボード結合コミットメッセージは、確立された仮想チャネルを通して伝えられる。
【００１０】
いくつかの構成では、キーボード結合応答は、クライアント装置がサポートするように構築および構成されたキーボード特徴のセット（たとえば、キーボードタイプ、キーボード・レイアウト・セット、現在のプラットフォームなど）をさらに識別する。
【００１１】
いくつかの構成では、この方法は、ユーザからのキーストローク入力がある時間期間にわたってサーバ・ベース・ユーザ環境に提供された後で、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置の別のクライアント・キーボード・レイアウトに整合させるステップをさらに含む。
【００１２】
いくつかの構成では、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置の別のクライアント・キーボード・レイアウトに整合させるステップは、キーボードレイアウト変更コマンドをユーザから受信し、ユーザからのキーボードレイアウト変更コマンドに応答して、新しいクライアント・キーボード・レイアウトをロードし、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置の最初のクライアント・キーボード・レイアウトとは異なるクライアント装置の新しいクライアント・キーボード・レイアウトに同期させるためのシステムデフォルトキーボードレイアウトとして新しいクライアント・キーボード・レイアウトを設定するステップを含む。
【００１３】
いくつかの構成では、最初のクライアント・キーボード・レイアウトは、第１の言語用の第１のキー構成を含む。さらに、新しいクライアント・キーボード・レイアウトは、第１の言語用の第１のキー構成とは異なる第２の言語用の第２のキー構成を含む。さらに、キーボードレイアウト変更コマンドをユーザから受信するステップは、タッチキーボード用のキーボード言語インジケータまたはユーザが動作させるクライアント装置のオペレーティングシステムタスクバーを介して、キーボード選択をユーザから取得するステップを含む。キーボード選択は、第１の言語用の第１のキー構成の代わりに第２の言語用の第２のキー構成を識別する。
【００１４】
いくつかの構成では、この方法は、キーボードレイアウト変更動作が実行された後で、サーバ装置が仮想セッション中にサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置の新しいサーバ・キーボード・レイアウトに従って、ユーザからのさらなるキーストローク入力をサーバ・ベース・ユーザ環境に提供するステップをさらに含む。
【００１５】
いくつかの構成では、この方法は、最初のサーバ・キーボード・レイアウトの代わりに新しいサーバ・キーボード・レイアウトを使用するように各サーバアプリケーションに通知するためのキーボード変更メッセージのセットをサーバ・ベース・ユーザ環境内で実行するサーバアプリケーションのセットにブロードキャストするステップをさらに含む。
【００１６】
別の実施形態は、ユーザ入力を処理するための命令のセットを記憶した非一時的コンピュータ可読媒体を有するコンピュータプログラム製品に関する。命令のセットは、コンピュータ化回路によって実行されるとき、コンピュータ化回路に、
（Ａ）  ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成し、
（Ｂ）  仮想セッションの生成時に、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置のクライアント・キーボード・レイアウトに整合させ、
（Ｃ）  サーバ・キーボード・レイアウトがクライアント・キーボード・レイアウトに整合した後で、サーバ装置が仮想セッション中にサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置のサーバ・キーボード・レイアウトに従って、ユーザからのキーボード入力をサーバ・ベース・ユーザ環境に提供する方法を実行させる。
【００１７】
さらに別の実施形態は、ユーザインターフェースと、メモリと、ユーザインターフェースおよびメモリに結合された制御回路とを含むクライアント装置に関する。メモリは命令を記憶し、命令は、制御回路によって実行されるとき、制御回路に、
（Ａ）  クライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成させ、
（Ｂ）  仮想セッションの生成時に、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置のクライアント・キーボード・レイアウトに整合させ、
（Ｃ）  サーバ・キーボード・レイアウトがクライアント・キーボード・レイアウトに整合した後で、サーバ装置が仮想セッション中にユーザインターフェースを介してサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置のサーバ・キーボード・レイアウトに従って、ユーザインターフェースを介してユーザからのキーボード入力をサーバ・ベース・ユーザ環境に提供させる。
【００１８】
さらに、別の実施形態は、ネットワークインターフェースと、メモリと、ネットワークインターフェースおよびメモリに結合された制御回路とを含むサーバ装置に関する。メモリは命令を記憶し、命令は、制御回路によって実行されるとき、制御回路に、
（Ａ）  ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成させ、
（Ｂ）  仮想セッションの生成時に、サーバ装置のサーバ・キーボード・レイアウトをクライアント装置のクライアント・キーボード・レイアウトに整合させ、
（Ｃ）  サーバ・キーボード・レイアウトがクライアント・キーボード・レイアウトに整合した後で、サーバ装置が仮想セッション中にサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置のサーバ・キーボード・レイアウトに従って、ユーザからのキーボード入力をサーバ・ベース・ユーザ環境に提供させる。
【００１９】
クラウドの文脈で、コンピュータ化回路のうちの少なくともいくつかは、ネットワーク上で配信されるリモートコンピュータリソースによって形成されることを理解されたい。そのようなコンピュータ化環境は、ホストされたサービスおよびリソース（たとえば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）の配信、強化されたスケーラビリティなど、いくつかの利点を提供することができる。
【００２０】
他の実施形態は、電子システムおよび装置、処理回路、コンピュータプログラム製品などに関する。いくつかの実施形態は、仮想セッションにおいてサーバ・サイド・キーボード・レイアウトをクライアント・サイド・キーボード・レイアウトに同期させることに関連する様々な方法、電子構成要素および回路に関する。
【００２１】
前述のおよび他の目的、特徴、および利点は、異なる図面を通して同様の参照符号が同じ部分を指す添付の図面に示される、本開示の特定の実施形態の以下の説明から明らかになるであろう。図面は、必ずしも一定の尺度であるとは限らず、代わりに、本開示の様々な実施形態の原理を示すことに重点が置かれている。
【図面の簡単な説明】
【００２２】
【図１】サーバ装置のサーバ・サイド・キーボード・レイアウトがクライアント装置のクライアント・サイド・キーボード・レイアウトに同期させるコンピュータ化設定のブロック図である。
【図２】ある例示的なキーボードレイアウトのブロック図である。
【図３】キーボード結合動作中の通信のシーケンス図である。
【図４】キーボードレイアウト同期動作の特定の詳細を示すブロック図である。
【図５】図１のコンピュータ化設定によって実行される手順のフローチャートである。
【発明を実施するための形態】
【００２３】
改善された技法は、仮想セッション中にサーバ・サイド・キーボード・レイアウトをクライアント・サイド・キーボード・レイアウトに電子的に同期させることに関連する。そのような同期は、どのキーボードレイアウトが現在有効であるかについてユーザの混乱を除く。さらに、そのような同期は、クライアント・サイド・テキスト入力がサーバサイドの環境によって誤解されないことを確実にする、したがって、ユーザ経験が大いに改善される。
【００２４】
本明細書で開示する特定の実施形態、例、および実装形態の個々の特徴は、技術的に道理にかなう所望の方法で組み合わされてよい。さらに、そのような特徴は、それにより、すべての考えられる組合せ、置換、および変形形態を形成するためにこのように組み合わされるが、ただし、そのような組合せ、置換、および／または変形形態が明示的に除外されるか、または非現実的である範囲を除く。そのような組合せ、置換、および変形形態に対するサポートは本文書に存在すると見なされる。
【００２５】
図１は、仮想セッション中にサーバ・サイド・キーボード・レイアウトをクライアント・サイド・キーボード・レイアウトに電子的に同期させるのに適したコンピュータ化設定２０を示す。コンピュータ化設定２０は、クライアント装置２２と、サーバ装置２４と、通信媒体２６とを備える。
【００２６】
クライアント装置２２は、ユーザが通信媒体２６を通してサーバ装置２４上でリソース（たとえば、アプリケーション、コンテンツ、サービスなど）にアクセスする仮想セッションに対するフロンドエンドとして動作するように構築および構成される。したがって、ユーザは、有用な作業を実行することができる。適切なクライアント装置は、ユーザワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、タブレットデバイス、スマートフォンなどを備える。
【００２７】
サーバ装置２４は、サーバサイドのリソース（たとえば、アプリケーション、コンテンツ、サービスなど）へのアクセスを１つまたは複数のクライアント装置２２に提供するように構築および構成される。いくつかの構成では、サーバ装置２４は、仮想機械をホストする仮想化プラットフォームである。適切なサーバ装置２４は、サーバコンピュータ、サーバファーム、サーバ設備またはキャンパス、分散回路などを備える。
【００２８】
通信媒体２６は、コンピュータ化設定２０の様々な構成要素が電子信号２８を交換すること（たとえば、二重矢印２８を参照）を可能にするために、それらの構成要素を一緒に接続するように構築および構成される。通信媒体２６が、バックボーン、ハブおよびスポーク、ループ、不規則性（ｉｒｒｅｇｕｌａｒ）、それらの組合せなどを含めて、様々は異なるトポロジーを有することが可能であることを示すために、通信媒体２６の少なくとも一部分はクラウドとして示されている。これらの線に沿って、通信媒体２６は、銅線データ通信デバイスおよびケーブル、光ファイバデバイスおよびケーブル、ワイヤレスデバイス、それらの組合せなどを備えていてもよい。さらに、通信媒体２６は、ＬＡＮベースの通信、セルラー通信、基本電話サービス（ＰＯＴＳ）通信、それらの組合せなどをサポートすることができる。
【００２９】
図１に示すように、クライアント装置２２は、通信インターフェース３０と、ユーザインターフェース３２と、メモリ３４と、処理回路３６とを備えている。そのようなクライアントサイド構成要素は、バス、ケーブル、コネクタ、回路基板、および他のハードウェアを介して一緒に電子的に接続され得る。
【００３０】
通信インターフェース３０は、クライアント装置２２を通信媒体２６に接続するように構築および構成される。したがって、通信インターフェース３０は、クライアント装置２２がコンピュータ化設定２０の他の構成要素と通信することを可能にする。そのような通信は、ラインベースおよび／またはワイヤレス（すなわち、ＩＰベース、セルラー、それらの組合せなど）であってよい。
【００３１】
ユーザインターフェース３２は、ユーザから入力を受信し、ユーザに出力を提供するように構築および構成される。独立型コンピュータの文脈で、ユーザインターフェース３２は、標準キーボード、ポインティングデバイス（たとえば、マウス）およびディスプレイによって形成され得る。タブレットまたはスマートフォンの文脈で、ユーザインターフェース３２は、タッチスクリーン、小型キーボード、ウェブカム、マクロフォン、スピーカ、加速度計など、他の構成要素によって形成され得る。
【００３２】
メモリ３４は、揮発性記憶装置（たとえば、ＤＲＡＭ、ＳＲＡＭなど）と不揮発性記憶装置（たとえば、フラッシュメモリ、磁気ディスクドライブなど）の両方を表すことが意図される。メモリ３４は、オペレーティングシステム４２と、サーバ装置２４との仮想セッションを確立および管理するための仮想クライアントアプリケーションおよびデータのセット４４と、他のアプリケーションおよびデータ４６とを含めて、様々なソフトウェア構成４０を記憶する。
【００３３】
処理回路３６は、メモリ３４内に記憶された様々なソフトウェア構成物４０に従って動作するように構築および構成される。具体的には、処理回路３６は、オペレーティングシステム４２を実行するとき、クライアント装置２２の様々なリソース（たとえば、メモリ割振り、プロセッササイクル、ハードウェア互換性など）を管理する。
【００３４】
さらに、仮想化アプリケーションおよびデータ４４のセットに従って動作する処理回路３６は、クライアント装置２２のユーザの代わりにサーバ装置２４との仮想セッションを生成および維持するための専用制御回路を形成する。そのような動作中に、以下でさらに詳細に説明されるように、処理回路３６は、混乱および誤解を回避し、それにより、ユーザ経験を改善するために、サーバ・サイド・キーボード・レイアウト５２をクライアント・サイド・キーボード・レイアウト５０に同期させる。そのような同期に関する通信は、通信媒体２６を通してクライアント装置２２とサーバ装置２４との間で確立される仮想チャネル５４を通して実行され得る（たとえば、図１の矢印５４を参照）。
【００３５】
さらに、他のアプリケーションおよびデータ４６に従って動作する処理回路３６は、他の動作を実行するための専用回路を形成する。たとえば、処理回路３６は、ユーザが、ウェブをブラウズする、ビデオを見る、セルラーフォン呼出しを行う、写真を撮るなど、他のローカル・ユーザ・レベル動作を実行することを可能にし得る。さらに、処理回路３６は、ユーザが、オンライン会議を介して１つまたは複数の他のユーザと遠隔に協力すること、文書および他のコンテンツを共有すること、オンライン仮想チーム環境（すなわち、オンライン作業空間）内で作業することなどを可能にし得る。
【００３６】
上述の処理回路３６は、専用ソフトウェアを実行する１つまたは複数のプロセッサ（または、コア）、特定用途向けＩＣ（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）および関連プログラム、個別構成要素、アナログ回路、他のハードウェア回路、それらの組合せなどを介することを含めて、様々な方法で実装され得ることを理解されたい。ソフトウェアを実行する１つまたは複数のプロセッサの文脈で、コンピュータプログラム製品５８は、ソフトウェアのすべてまたは部分をクライアント装置２２に提供することができる。コンピュータプログラム製品５８は、クライアント装置２２の１つまたは複数の動作を制御するための命令のセットを記憶した非一時的および不揮発性コンピュータ可読媒体を有する。適切なコンピュータ可読記憶媒体の例は、ＣＤ−ＲＯＭ、フラッシュメモリ、ディスクメモリ、テープメモリなど、不揮発性方法で命令を記憶した有形製造品および有形装置を含む。
【００３７】
図１にさらに示すように、サーバ装置２４は、ネットワークインターフェース６０と、メモリ６４と、処理回路６６とを備える。そのようなサーバサイド構成要素は、バス、ケーブル、コネクタ、回路基板、および他のハードウェアを介して一緒に電子的に接続され得る。
【００３８】
ネットワークインターフェース６０は、サーバ装置２４を通信媒体２６に接続するように構築および構成される。したがって、ネットワークインターフェース６０は、サーバ装置２４がコンピュータ化設定２０の他の構成要素と通信することを可能にする。そのような通信は、ラインベースおよび／またはワイヤレス（すなわち、ＩＰベース、セルラー、それらの組合せなど）であってよい。
【００３９】
メモリ６４は、揮発性記憶装置（たとえば、ＤＲＡＭ、ＳＲＡＭなど）と不揮発性記憶装置（たとえば、フラッシュメモリ、磁気ディスクドライバなど）の両方を表すことが意図される。メモリ６４は、オペレーティングシステム７２と、クライアント装置２２との仮想セッションを確立および管理するための仮想化アプリケーションおよびデータ７４のセットと、他のアプリケーションおよびデータ７６とを含めて、様々なソフトウェア構成物７０を記憶する。
【００４０】
処理回路６６は、メモリ６４内に記憶された様々なソフトウェア構成物７０に従って動作するように構築および構成される。具体的には、処理回路６６は、オペーティングシステム７２を実行するとき、サーバ装置２４の様々なリソース（たとえば、メモリ割振り、プロセッササイクル、ハードウェア互換性など）を管理する。
【００４１】
さらに、仮想化アプリケーションおよびデータ７４のセットに従って動作する処理回路６６は、１つまたは複数のクライアント装置２２との仮想セッションを生成および維持するための専用制御回路を形成する。そのような動作中、以下でさらに詳細に説明するように、処理回路６６は、混乱および誤解を回避し、それにより、ユーザの経験を改善するために、仮想チャネル５４を通してサーバ・サイド・キーボード・レイアウト５２をクライアント・サイド・キーボード・レイアウト５０に同期させる。
【００４２】
さらに、他のアプリケーションおよびデータ７６に従って動作する処理回路６６は、他の動作を実行するための専用回路を形成する。たとえば、処理回路６６は、サービスおよびユーティリティ（たとえば、仮想セッション中にユーザに提供されるアプリケーションおよびサービス、セキュリティなど）用のコード、管理ツール（たとえば、ユーザ登録、ユーザアカウント管理など）用のコード、サーバベースの動作用のコードなど、他のサーバレベル動作を実行することができる。
【００４３】
上述の処理回路６６は、専用ソフトウェアを実行する１つまたは複数のプロセッサ（または、コア）、特定用途向けＩＣ（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）および関連プログラム、個別構成要素、アナログ回路、他のハードウェア回路、それらの組合せなどを介することを含めて、様々な方法で実装され得ることを理解されたい。ソフトウェアを実行する１つまたは複数のプロセッサの文脈で、コンピュータプログラム製品７８は、ソフトウェアのすべてまたは部分をサーバ装置２４に提供することができる。コンピュータプログラム製品７８は、サーバ装置２４の１つまたは複数の動作を制御するための命令のセットを記憶した非一時的および不揮発性コンピュータ可読媒体を有する。適切なコンピュータ可読記憶媒体の例は、ＣＤ−ＲＯＭ、フラッシュメモリ、ディスクメモリ、テープメモリなど、不揮発性方法で命令を記憶した有形製造品および有形装置を含む。次に、図２を参照してさらなる詳細が提供される。
【００４４】
図２は、クライアント・サイド・キーボード・レイアウト５０および／またはサーバ・サイド・キーボード・レイアウト５２（やはり図１を参照）に適したある例示的なキーボードレイアウト１００（すなわち、ＱＷＥＲＴＹキーボードレイアウト）を示す。他のキーボードレイアウト、たとえば、ＱＷＥＲＴＺ、ＡＺＥＲＴＹ、Ｄｖｏｒａｋ、Ｃｏｌｅｍａｋ、Ｗｏｒｋｍａｎ、Ｎｏｒｍａｎ、ＪＣＵＫＥＮ、Ｎｅｏ、Ｐｌｏｖｅｒ、ＢＥＰＯ、トルコ語、ブラーフミー系文字、ＩｎＳｃｒｉｐｔ、クメール語、タイ語、シンハラ語、チベット語、ドゾンカ語、アラブ語、アルメニア語、キリル語、他の外国語文字キーボードレイアウト、カスタム化および／または個人化されたキーボードレイアウトなども使用に適することを理解されたい。
【００４５】
クライアント装置２２上で、ユーザは、（たとえば、タッチスクリーン上に表示される）クライアント・サイド・キーボード・レイアウト５０を見ること、ならびにクライアント・サイド・キーボード・レイアウト５０のキーを作動させることができる。サーバ装置２４上で、サーバ・サイド・キーボード・レイアウト５２は内部的に管理される。
【００４６】
図２に示すように、キーボードレイアウト１００は、それぞれの文字１１２（１）、１１２（２）、１１２（３）、．．．（集合的に、文字１１２）にマップするキーボードロケーション（または、キー）１１０（１）、１１０（２）、１１０（３）、．．．（集合的に、キーボードロケーション１１０）を含む。本明細書で文字という用語は、アルファベット文字、数字、記号、他のテキストベースのメタ文字、機能、方向、動作、それらの組合せなどを意味するために使用されることを理解されたい。
【００４７】
図２の例示的なキーボードレイアウト１００は、現在、クライアント・サイド・キーボード・レイアウト５０ならびにサーバ・サイド・キーボード・レイアウト５２であると仮定する。この例では、キーボードレイアウト１００は、英語（米国）キーボードレイアウトであり、この場合、ロケーション１１０（１）は「ｑ」にマップし、ロケーション１１０（２）は「ｗ」にマップし、ロケーション１１０（３）は「ｅ」にマップする、などである。すなわち、ユーザが（たとえば、タッチ、キー押下、または他のキーストロークジェスチャによって）ロケーション１１０（１）を選択するとき、ユーザは「ｑ」を入力する。同様に、ユーザがロケーション１１０（２）を選択するとき、ユーザは「ｗ」を入力する、などである。
【００４８】
いくつかの構成では、ユーザがキーストロークを入力するとき、特定のロケーション１１０の特定の文字１１２への変換がクライアント装置２２内で生じ、クライアント装置２２は、特定の文字１１２を識別する電子信号を処理のためにサーバ装置２４に送る。他の構成では、ユーザがキーストロークを入力するとき、クライアント装置２２は、特定のロケーション１１０を識別する電子信号をサーバ装置２４に送り、特定のロケーション１１０の特定の文字１１２への変換がサーバ装置２４内で生じる。
【００４９】
ユーザが、（たとえば、特殊キー１２２にタッチすることによって、タッチスクリーンのタスクバー上の入力言語インジケータをアクティブ化することによって、メニュー／タブ上をクリックすることによってなど）ユーザに他の選択可能なキーボードレイアウトを提示するメニュー１２０をアクティブ化すると仮定する。そのような状況では、ユーザは、次いで異なるキーボードレイアウト選択をタッチすることによって、現在のクライアント・サイド・キーボード・レイアウト５０を変更することができる。たとえば、図２に示すように、ユーザは、日本語キーボードレイアウト「Ｊ」、ドイツ語キーボードレイアウト「ＤＥＵ」、フランス語キーボードレイアウト「ＦＲＡ」などを選択することができる。ユーザが現在のクライアント・サイド・キーボード・レイアウト５０を異なるクライアント・サイド・キーボード・レイアウト５０に切り替えることを選択した場合、クライアント装置２２は、この変更をサーバサイド装置２４に電子的に通信する。応答して、サーバサイド装置２４は、サーバ・サイド・キーボード・レイアウト５２をクライアント・サイド・キーボード・レイアウト５０に同期させるために、サーバ・サイド・キーボード・レイアウト５２を自動的に更新する。そのようなサーバサイド動作は、ユーザに透過的であり、それにより、ユーザがサーバ装置２４上で同様の切替えを手動で行う負担を軽減することが好ましい。
【００５０】
ユーザがキーボードレイアウト変更を行った後で、クライアント装置２２のタッチスクリーンは、新しく選択されたキーボードレイアウトを表示する（やはり、図１のユーザインターフェース３２を参照）。新しく選択されたキーボードレイアウトに対して、キーボードロケーション１１０のうちの少なくとも１つまたは複数が、前のキーボードレイアウトに対して異なる文字１１２（たとえば、異なる文字、異なる数字、異なる記号など）にマップする。キーボードレイアウト切替えが生じると、ユーザが新しく選択されたキーボードレイアウトのキーを選択するとき、ユーザは、新しく選択されたキーボードレイアウトに従って文字、たとえば、その文字に対する異なるロケーションにより異なる文字、新しい文字、新しい機能などに入ることができる。
【００５１】
クライアント装置２２は、仮想セッション中に専用クライアントサイド回路を形成するための専用クライアントソフトウェア（たとえば、図１の仮想クライアント装置およびデータ４４を参照）を実行することを理解されたい。同様に、サーバ装置２４は、仮想セッション中に専用サーバサイド回路を形成するための専用サーバソフトウェアを実行する（たとえば、図１の仮想化アプリケーションおよびデータ７４を参照）。そのような回路は、たとえば、リッチなメディア転送をカプセル化するために、独立コンピュータアーキテクチャ（ＩＣＡ）をサポートするために、ＣＯＭポート、ビデオ、グラフィックス、スマートカード特徴を利用するためになど、クライアント装置２２とサーバ装置２４との間の仮想セッション交換をサポートするためにセッションレイヤにおいて仮想チャネル５４（図１）を確立する。
【００５２】
クライアント装置２２とサーバ装置２４との間に仮想チャネル５４が確立されると、装置２２、２４上の専用回路は、サーバ・サイド・キーボード・レイアウト５２ならびにクライアント・サイド・キーボード・レイアウト５０を同期させる。具体的には、クライアント装置２２およびサーバ装置２４は、最初にキーボード・レイアウト・セットを折衝して、クライアント・サイド・キーボード・レイアウト５０をサーバ・サイド・キーボード・レイアウト５２に同期させるためのキーボードレイアウト結合動作を最初に実行する。そのような最初の同期の後で、ユーザは、クライアント・サイド・キーボード・レイアウト５０がサーバ装置２４上のサーバ・サイド・キーボード・レイアウト５２に整合するという自信をもってクライアント装置２２を動作させることができる。さらに、ユーザが最初のクライアント・サイド・キーボード・レイアウト５０から新しいクライアント・サイド・キーボード・レイアウト５０に切り替える場合、クライアント装置２２およびサーバ装置２４は、新しいクライアント・サイド・キーボード・レイアウト５０をサーバ・サイド・キーボード・レイアウト５２に同期させるために電子的に協働する。したがって、どのキーボードレイアウトがサーバ装置２４上で有効であるかについてユーザが混乱することはない。さらに、サーバ装置２４上のテキスト入力を誤解する機会もない。次に、図３を参照してさらなる詳細が提供される。
【００５３】
図３は、クライアント装置２２とサーバ装置２４との間の仮想セッションの開始時に（やはり、図１を参照）、専用クライアントサイド回路１５２と専用サーバサイド回路１５４との間で実行されるキーボード結合動作１５０に関するシーケンス図を示す。ここで、ユーザは、サーバ装置２４によって提供される仮想デスクトップまたは仮想アプリケーション環境（たとえば、リモートアプリケーション、遠隔に記憶されたコンテンツなど）にアクセスするために、仮想セッションを開始した可能性がある。キーボード結合動作は、クライアント装置２２のクライアント・サイド・キーボード・レイアウト５０セットをサーバ装置２４のサーバ・サイド・キーボード・レイアウト５２セットと最初に折衝する。
【００５４】
専用クライアントサイド回路１５２は、仮想クライアントアプリケーションおよびデータ４４に従って動作するクライアント装置２２の処理回路３６によって形成される（図１）。いくつかの構成では、そのようなクライアントサイド回路１５２の少なくとも一部分は、たとえば、ユーザが仮想デスクトップまたは仮想アプリケーションをサーバ装置２４から要求するとき、仮想セッションの始まりにロードされる動的リンクライブラリ（略してＤＬＬ）の展開によって形成される。
【００５５】
同様に、専用クライアントサイド回路１５４は、仮想化アプリケーションおよびデータ７４に従って動作するサーバ装置２４の処理回路７６によって形成される（図１）。いくつかの構成では、そのようなサーバサイド回路１５４の少なくとも一部分は、サーバ装置２４上に設置されたＤＬＬによって形成される。
【００５６】
動作中、クライアント装置２２とサーバ装置２４との間に仮想セッションが生成されると、専用回路１５２、１５４は仮想チャネル５４を開く（または、形成する）。仮想チャネル５４を介した通信（たとえば、パケット）は通信媒体２６（図１）を通して伝えられることを理解されたい。
【００５７】
図３を参照すると、仮想チャネル５４が開かれた後で、専用サーバサイド回路１５４はキーボード結合要求１６０を専用クライアントサイド回路１５２に送る。キーボード結合要求１６０は、サーバ装置２４によってサポートされる互換性のあるサーバ・サイド・キーボード・レイアウト５４のセットを識別する。たとえば、キーボード結合要求１６０は、サーバ装置２４が現在サポートを試みているサーバ・サイド・キーボード・レイアウト５２の特定のセットを示す。さらに、キーボード結合要求１６０は、専用サーバサイド回路１５４がどのキーボード特徴（たとえば、キーボードタイプ、現在のプラットフォームなど）をサポートし得るかをさらに識別する。
【００５８】
キーボード結合要求１６０に応答して、専用クライアントサイド回路１５２は、互換性のあるサーバ・サイド・キーボード・レイアウト５４のセットをキーボード結合要求１６０から読み取り、クライアント装置２２が互換性のあるサーバ・サイド・キーボード・レイアウト５４のうちのどれをサポートするように構成されているかを決定するキーボード査定動作１６２を実行する。そのような査定は、クライアント装置２２の特定のオペレーティングプラットフォーム、特定のドライバが設置されているかどうか、特定のソフトウェア更新またはアップグレードが整っているかどうかなど、様々な要因に基づいてよい。
【００５９】
専用クライアントサイド回路１５２は、次いで、互換性のあるクライアント・サイド・キーボード・レイアウト５０のセットとして、クライアント装置２２が互換性のあるサーバ・サイド・キーボード・レイアウト５２のセットのうちのどれをサポートするように構成されているかを識別するキーボード結合応答１６４を生成し、キーボード結合応答１６４を専用サーバサイド回路１５４に送る。さらに、キーボード結合応答１６４は、専用クライアントサイド回路１５２がどのキーボード特徴（たとえば、キーボードタイプ、現在のプラットフォームなど）をサポートし得るかをさらに識別する。
【００６０】
キーボード結合応答１６４に応答して、専用サーバサイド回路１５４は、それぞれのキーボードレイアウトからサーバ装置２４がクライアント装置２２と互換性があることを確認するキーボード確認動作１６６を実行する。さらに、専用サーバサイド回路１５４は、今後の使用のために、キーボード結合応答１６４によって識別されたキーボード特徴を記憶する。
【００６１】
次に、専用サーバサイド回路１５４は、キーボード結合コミットメッセージ（または、コマンド）１６８を生成して、専用クライアントサイド回路１５２に送る。キーボード結合コミットメッセージ１６８は、専用サーバサイド回路１５４がサーバ・サイド・キーボード・レイアウト５２の特定のセットが有効であると見なすこと、すなわち、サーバ装置２４とクライアント装置２２の両方によってサポートされるキーボードレイアウトを専用クライアントサイド回路１５２に知らせる。
【００６２】
キーボード結合コミットメッセージ１６８に応答して、専用クライアントサイド回路１５２は、キーボード結合コミットメッセージ１６８をサーバ・サイド・キーボード・レイアウト５２の特定のセットにコミットさせるためのコマンドと見なす。それに応じて、専用クライアントサイド回路１５２は、特定のサーバ・キーボード・レイアウト５２セットに整合させるためにクライアント・サイド・キーボード・レイアウト５０セットを正式に保存する。
【００６３】
この時点で、クライアント装置２２およびサーバ装置２４は、使用のためにどのキーボードレイアウトが利用可能であるかを折衝している。具体的には、クライアント装置２２およびサーバ装置２４は、互換性のあるキーボードレイアウトの共通セットに関して合意している。
【００６４】
キーボードレイアウトの折衝が完了した後で、専用クライアントサイド回路１５２は、キーボードレイアウト識別子（ＫＬＩ）メッセージ１８０を専用サーバサイド回路１５４に送る。ＫＬＩメッセージ１８０は、キーボードレイアウト識別子として、現在のクライアント・サイド・キーボード・レイアウト５０を指定する、カプセル化されたキーボードレイアウト情報を含み、これにより、サーバ装置２４がクライアント・サイド・キーボード・レイアウト５０に関してその知識を同期させること（または、更新すること）を可能にする。具体的には、ＫＬＩメッセージ１８０は、入力ロケール、キーボードタイプ、キーボードレイアウト名など、様々な属性を含む。
【００６５】
ユーザがその後、クライアント・サイド・キーボード・レイアウト５０を新しいクライアント・サイド・キーボード・レイアウト５０に切り替えた場合、専用クライアントサイド回路１５２は、新しいクライアント・サイド・キーボード・レイアウト５０が折衝されたキーボードレイアウト５２の中にあるかどうか、すなわち、新しいクライアント・サイド・キーボード・レイアウト５０が互換性のあるキーボードレイアウトの共通セットに属するかどうかを検査する。属する場合、専用クライアントサイド回路１５２は別のキーボードレイアウト識別子（ＫＬＩ）メッセージ１８０を専用サーバサイド回路１５４に送る。ＫＬＩメッセージ１８０は、キーボードレイアウト識別子として、新しいクライアント・サイド・キーボード・レイアウト５０を指定する、カプセル化されたキーボードレイアウト情報を含み、これにより、サーバ装置２４がクライアント・サイド・キーボード・レイアウト５０に関してその知識を同期させること（または、更新すること）を可能にする。具体的には、ＫＬＩメッセージ１８０は、入力ロケール、キーボードタイプ、キーボードレイアウト名など、様々な属性を含む。次に、図４を参照してさらなる詳細が提供される。
【００６６】
図４は、クライアント装置２２とサーバ装置２４との間のキーボードレイアウト同期を維持するために、専用サーバサイド回路１５４が専用クライアントサイド回路１５２から受信するキーボード情報を専用サーバサイド回路１５４がどのように配信するかの特定の詳細を示すブロック図である。示すように、サーバ装置２４は、仮想セッション中にユーザによってアクセスされる仮想デスクトップおよび／または仮想アプリケーション環境に対する、専用サーバサイド回路１５４ならびに実行中のオペレーティングシステム２００、および実行中のアプリケーション２１０（１）２１０（２）、２１０（３）、２１０（４）、．．．（集合的に、実行中のアプリケーション２１０）を含む。いくつかの構成では、仮想デスクトップおよび／または仮想アプリケーション環境は、仮想化プラットフォーム上でホストされる仮想機械を介して提供される。
【００６７】
図４に示すように、専用クライアントサイド回路１５２からＫＬＩメッセージ１８０を受信するとすぐに、専用サーバサイド回路１５４は、選択されたキーボードレイアウトをアクティブ化し、選択されたキーボードレイアウトに基づいてデフォルト入力言語を設定するために、ランナーオペレーティングシステム２００とインターフェースする。すなわち、矢印２２０を参照。さらに、専用サーバサイド回路１５４は、実行中のサーバ・サイド・アプリケーション２１０にその入力言語変更を通知するためのメッセージ２３０をブロードキャストする。したがって、すべての実行中のサーバ・サイド・アプリケーションは、クライアント装置２２から、クライアント装置２２上の選択されたキーボードレイアウト５０に一致する言語（たとえば、英語、ドイツ語、フランス語、日本語など）でユーザテキストを入力するように知らされる。これにより、クライアント装置２２およびサーバ装置２４は、キーボードレイアウト同期をリッチかつ頑強に維持し、ユーザテキスト入力を適切に解釈することができる。
【００６８】
ユーザがクライアント・サイド・キーボード・レイアウト５０を切り替える（たとえば、元のキーボードレイアウトに再度切り替える、新しいキーボードレイアウトに切り替えるなどする）たびに、このキーボード更新プロセスが繰り返されることを理解されたい。したがって、クライアント・サイド・キーボード・レイアウト５０およびサーバ・サイド・キーボード・レイアウト５２は連続的に同期される。次に、図５を参照してさらなる詳細が提供される。
【００６９】
図５は、キーボードレイアウトを同期させるときにコンピュータ化設定２０の回路によって実行される手順３００のフローチャートである。３０２において、回路は、ユーザが動作させるクライアント装置とサーバ・ベース・ユーザ環境へのアクセスを提供するサーバ装置との間に仮想セッションを生成する。そのようなセッションは、ユーザが有用な作業を実行するために、サーバ装置２４上の仮想デスクトップまたは仮想アプリケーション環境へのアクセスを提供するようにクライアント装置２２に指示することに応答し得る（やはり、図１を参照）。
【００７０】
３０４において、回路は、サーバ装置のサーバ・キーボード・レイアウト５２をクライアント装置のクライアント・キーボード・レイアウト５０に整合させる。具体的には、回路は、サーバ装置の最初のサーバ・キーボード・レイアウト５２をクライアント装置の最初のクライアント・キーボード・レイアウト５０に同期させるために（やはり、図３を参照）、キーボード結合動作およびキーボードレイアウト同期動作を実行する。後で、サーバ・キーボード・レイアウト５２をクライアント・キーボード・レイアウト５０に整合させるために、クライアント装置およびサーバ装置は、サーバ・キーボード・レイアウト５２をクライアント・キーボード・レイアウト５０に更新するためのキーボード更新動作を実行するために引き続き通信する。
【００７１】
３０６において、回路は、サーバ装置が仮想セッション中にサーバ・ベース・ユーザ環境へのアクセスをユーザに提供する間に、サーバ装置のサーバ・キーボード・レイアウト５２に従って、ユーザからのキーストローク入力をサーバ・ベース・ユーザ環境に提供する。そのような動作は、ユーザが仮想セッションを終了するまで、または（たとえば、３０４に戻ることによって）キーボードレイアウトを切り替えるまで続く。
【００７２】
上述のように、改善された技法は、仮想セッション中にサーバ・サイド・キーボード・レイアウト５２をクライアント・サイド・キーボード・レイアウト５０に電子的に同期させることに関する。そのような同期は、どのキーボードレイアウトが現在有効であるかについてユーザの混乱を除く。さらに、そのような同期は、クライアント・サイド・テキスト入力がサーバサイド環境によって誤解されないことを確実にする。したがって、ユーザ経験が大いに改善される。
【００７３】
さらに、上述の技法は、クライアントとサーバとの間の同期を単に提供する以上のことを意味することを理解されたい。むしろ、これらの技術は、仮想セッション中にサーバ装置のサーバ・キーボード・レイアウト５２をクライアント装置のクライアント・キーボード・レイアウト５０に整合させるための調整された整合動作の実行に関連する。そのような整合は、どのキーボードレイアウトが現在有効であるかについての混乱を除くこと、ならびに、サーバサイド環境による誤解を防ぐことによって技術を改善する。結果として、上述の技法は、ユーザが仮想セッション中にサーバ・ベース・ユーザ環境（たとえば、仮想デスクトップ環境）にアクセスする場合、ユーザの経験を改善する。
【００７４】
本開示の様々な実施形態が具体的に示され説明されてきたが、添付の請求項によって定義される本開示の趣旨および範囲から逸脱せずに、その中で形態および詳細への様々な変更を行うことができることを当業者は理解されよう。
【００７５】
たとえば、コンピュータ化設定２０の様々な構成要素は、クラウド内で実装されること、またはクラウドに、すなわち、ネットワーク上で提供されるリモートコンピュータリソースに「移転させること」が可能であることを理解されたい。ここで、様々なコンピュータリソースは、密に（たとえば、単一の設備内のサーバファーム）または比較的遠い距離にわたって（たとえば、キャンパスにわたって、様々な都市内で、全国でなど）提供され得る。これらの状況では、リソースを接続するネットワークは、バックボーン、ハブおよびスポーク、ループ、不規則性、それらの組合せなどを含めて、様々な異なるトポロジーを有することができる。さらに、ネットワークは、銅線データ通信デバイスおよびケーブル、光ファイバデバイスおよびケーブル、ワイヤレスデバイス、それらの組合せなどを含み得る。さらに、ネットワークは、ＬＡＮベースの通信、ＳＡＮベースの通信、それらの組合せなどをサポートすることができる。
【００７６】
さらに、上記で提供されたキーボード切替え例は、一例として、タッチスクリーンによって提供されるグラフィカルキーボードに対処したことを理解されたい。いくつかの構成では、上述の改善は、ユーザが、タッチスクリーンによって提供されるグラフィカルキーボードの代わりに、キーボード言語設定またはオペレーティングシステム４２（図１）によって提供されるスクリーンのインジケータを通して選択され得るキーボードレイアウトを備えた物理的キーボードを使用する状況に適用される。いくつかの構成では、上述の改善は、ユーザが第１の物理的キーボードを第２の物理的キーボードに置換する状況に適用される。いくつかの構成では、様々な物理的キーボードはプラグアンドプレイであり、クライアント装置２２上の自動検出によって特定のタイプのキーボードレイアウトが検出される。これらの構成では、クライアント装置２２は、新しいクライアント・サイド・キーボード・レイアウト５０に対する変更をサーバ装置２４に知らせるＫＬＩメッセージ１８０（図３および図４）をサーバ装置２４に送り、サーバ装置２４は、サーバ・サイド・キーボード・レイアウト５２を新しいクライアント・キーボード・レイアウト５０に同期させることによって応答する。そのような修正および拡張は、本開示の様々な実施形態に属することが意図される。
【図１】
0006615997.tif 000002
【図２】
0006615997.tif 000003
【図３】
0006615997.tif 000004
【図４】
0006615997.tif 000005
【図５】
0006615997.tif 000006