(57)【特許請求の範囲】
【請求項１】
クライアント・マシン上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）と、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立するステップであって、該通信チャネルが、前記クライアントＩＭＥが前記サーバＩＭＥを介して仮想アプリケーションと対話することを可能にし、該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、前記クライアントＩＭＥは、前記クライアント・マシンにインストールされ、前記クライアント・マシンを操作するユーザにより選択されるＩＭＥであり、前記通信チャネルは、前記クライアントＩＭＥが、前記サーバＩＭＥをプロキシとして使用して仮想アプリケーションと対話することを可能にするステップと、
前記クライアントＩＭＥから前記通信チャネルを介して受信されたＩＭＥデータを前記サーバＩＭＥによって前記仮想アプリケーションへ中継し、前記仮想アプリケーションに前記ＩＭＥデータを提供するステップであって、前記ＩＭＥデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントＩＭＥによって生成され、（ｉ）合成文字のセットおよび表示属性を含む合成要素と、（ｉｉ）前記合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動する要求を提供する始動要求と、を含むステップと、
前記サーバＩＭＥによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ中継し、前記クライアントＩＭＥに前記アプリケーション情報を提供するステップであってし、前記アプリケーション情報が、前記始動要求に応答して前記仮想アプリケーションによって生成され、前記アプリケーション情報が、前記仮想アプリケーションが候補ウィンドウを表示するかどうかを示す始動応答を含むステップと、
前記始動応答を返したことに応答して、および前記始動応答が、前記仮想アプリケーションが前記候補ウィンドウを表示することを示しているのに伴って、
前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して候補リスト要素を受信するステップと、
前記サーバＩＭＥによって前記候補リスト要素を前記仮想アプリケーションへ転送するステップと、
前記仮想アプリケーションによって前記候補リスト要素を使用して前記仮想アプリケーションの前記スクリーン出力内に前記候補ウィンドウをレンダリングするステップと、を含む、人間言語の文字を仮想アプリケーションへと入力する方法。
【請求項２】
クライアント・マシン上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）と、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立するステップであって、該通信チャネルが、前記クライアントＩＭＥが前記サーバＩＭＥを介して仮想アプリケーションと対話することを可能にし、該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、前記クライアントＩＭＥは、前記クライアント・マシンにインストールされ、前記クライアント・マシンを操作するユーザにより選択されるＩＭＥであり、前記通信チャネルは、前記クライアントＩＭＥが、前記サーバＩＭＥをプロキシとして使用して仮想アプリケーションと対話することを可能にするステップと、
前記クライアントＩＭＥから前記通信チャネルを介して受信されたＩＭＥデータを前記サーバＩＭＥによって前記仮想アプリケーションへ中継し、前記仮想アプリケーションに前記ＩＭＥデータを提供するステップであって、前記ＩＭＥデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントＩＭＥによって生成され、（ｉ）合成文字のセットおよび表示属性を含む合成要素と、（ｉｉ）前記合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動する要求を提供する始動要求と、を含むステップと、
前記サーバＩＭＥによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ中継し、前記クライアントＩＭＥに前記アプリケーション情報を提供するステップであってし、前記アプリケーション情報が、前記始動要求に応答して前記仮想アプリケーションによって生成され、前記アプリケーション情報が、前記クライアントＩＭＥが候補ウィンドウを表示するかどうかを示す始動応答を含むステップと、
前記始動応答を返したことに応答して、および前記始動応答が、前記クライアントＩＭＥが前記候補ウィンドウを表示することを示しているのに伴って、
前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して座標要求を受信するステップと、
前記サーバＩＭＥによって前記座標要求を前記仮想アプリケーションへ転送するステップと、
前記サーバＩＭＥによって前記仮想アプリケーションから座標応答を受信するステップであって、該座標応答が、
（ｉ）前記仮想アプリケーションのカーソルのカーソル位置、または
（ｉｉ）前記仮想アプリケーションによって表示される前記合成ウィンドウのエクステント・エリアを示す座標のセットのうちの１つを提供するステップと、
前記座標応答を、前記通信チャネルを介して前記クライアントＩＭＥに返して、クライアントＩＭＥが、前記座標応答に基づいて前記スクリーン出力と相対的なロケーションに前記候補ウィンドウを表示することを可能にし、それによって前記候補ウィンドウが、
（ｉ）前記カーソル位置、または
（ｉｉ）前記合成ウィンドウのうちの１つの隣に表示されるステップと、を含む、人間言語の文字を仮想アプリケーションへと入力する方法。
【請求項３】
前記通信チャネルを介して受信された前記ＩＭＥデータが、
ユーザ入力アクションに応答して前記クライアントＩＭＥによって生成された合成始動メッセージをさらに含み、
前記方法が、
前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示するステップをさらに含み、
該合成ウィンドウが、前記表示属性を使用して合成文字の前記セットをレンダリングする、請求項１または２に記載の方法。
【請求項４】
前記始動要求を前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して受信するステップと、
前記サーバＩＭＥによって前記始動要求を前記仮想アプリケーションへ転送するステップと、
前記サーバＩＭＥによって前記仮想アプリケーションから前記始動応答を受信するステップと、
前記始動応答を、前記通信チャネルを介して前記クライアントＩＭＥに返すステップと、をさらに含む、請求項３に記載の方法。
【請求項５】
前記合成要素における変化に応答して、更新された座標応答を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ送信するステップをさらに含み、
前記更新された座標応答が、
（ｉ）更新されたカーソル位置、または
（ｉｉ）前記合成ウィンドウの前記エクステント・エリアを示す座標の更新されたセットのうちの１つを示す、請求項２に記載の方法。
【請求項６】
前記ユーザが前記クライアント・マシン上で前記表示ウィンドウを動かした場合には、さらなる更新された座標応答を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ送信し、
クライアントＩＭＥが、
（ｉ）前記カーソル位置、または
（ｉｉ）前記合成ウィンドウのうちの１つの隣に前記候補ウィンドウを引き続き表示することを可能にするステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記クライアントＩＭＥおよび前記サーバＩＭＥがそれぞれ、ＩＭＥ設定を識別するそれぞれのコンパートメントを有し、
前記方法が、前記クライアントＩＭＥのコンパートメント設定を前記サーバＩＭＥのコンパートメント設定と同期化し、それにより、いずれのＩＭＥの前記コンパートメント設定に対して行われたいかなる変更も、両方のＩＭＥの前記コンパートメント設定において実施されるステップをさらに含む、請求項１または２に記載の方法。
【請求項８】
前記通信チャネルを確立した後に、結合動作を実行するステップをさらに含み、
前記結合動作が、
（ｉ）前記サーバによって、結合要求を前記クライアント・マシンへ送信するステップであって、該結合要求が、前記サーバによってサポートされる人間言語のリストを指定するステップと、
（ｉｉ）前記サーバによって前記クライアント・マシンから結合応答を受信するステップであって、該結合応答が、前記クライアント・マシンによってもサポートされる前記サーバによってサポートされる人間言語のリストを識別するステップと、
（ｉｉｉ）前記クライアント・マシンから受信された人間言語の前記リスト上のそれぞれの人間言語をサポートするように前記サーバを構成するステップと、を含む、請求項１または２に記載の方法。
【請求項９】
制御回路によって実行されたときに、人間言語の文字を仮想アプリケーションへと入力する方法を前記制御回路に実行させる命令を有する非一時的なコンピュータ可読メディアのセットを含むコンピュータ・プログラム製品であって、
前記方法により、
クライアント・マシン上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）と、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立し、
該通信チャネルが、前記クライアントＩＭＥが前記サーバＩＭＥを介して仮想アプリケーションと対話することを可能にし、
該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、前記クライアントＩＭＥは、前記クライアント・マシンにインストールされ、前記クライアント・マシンを操作するユーザにより選択されるＩＭＥであり、前記通信チャネルが、前記クライアントＩＭＥは、前記サーバＩＭＥをプロキシとして使用して仮想アプリケーションと対話することを可能にし、
前記クライアントＩＭＥから前記通信チャネルを介して受信されたＩＭＥデータを前記サーバＩＭＥによって前記仮想アプリケーションへ中継して、前記仮想アプリケーションに前記ＩＭＥデータを提供し、
前記ＩＭＥデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントＩＭＥによって生成され、（ｉ）合成文字のセットおよび表示属性を含む合成要素と、（ｉｉ）前記合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動する要求を提供する始動要求と、を含み、
前記サーバＩＭＥによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ中継して、前記クライアントＩＭＥに前記アプリケーション情報を提供し、前記アプリケーション情報が、前記始動要求に応答して前記仮想アプリケーションによって生成され、前記アプリケーション情報が、前記クライアントＩＭＥが候補ウィンドウを表示するかどうかを示す始動応答を含み、
前記始動応答を返したことに応答し、および前記始動応答が、前記クライアントＩＭＥが前記候補ウィンドウを表示することを示しているのに伴って、
前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して座標要求を受信し、
前記サーバＩＭＥによって前記座標要求を前記仮想アプリケーションへ転送し、
前記サーバＩＭＥによって前記仮想アプリケーションから座標応答を受信するよう構成され、
該座標応答が、
（ｉ）前記仮想アプリケーションのカーソルのカーソル位置、または
（ｉｉ）前記仮想アプリケーションによって表示される前記合成ウィンドウのエクステント・エリアを示す座標のセットのうちの１つを提供し、
前記座標応答を、前記通信チャネルを介して前記クライアントＩＭＥに返して、クライアントＩＭＥが、前記座標応答に基づいて前記スクリーン出力と相対的なロケーションに前記候補ウィンドウを表示することを可能にし、それによって前記候補ウィンドウが、
（ｉ）前記カーソル位置または
（ｉｉ）前記合成ウィンドウのうちの１つの隣に表示されるよう構成されている、コンピュータ・プログラム製品。
【請求項１０】
前記通信チャネルを介して受信された前記ＩＭＥデータが、
ユーザ入力アクションに応答して前記クライアントＩＭＥによって生成された合成始動メッセージをさらに含み、
前記方法により、前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示し、
該合成ウィンドウが、前記表示属性を使用して合成文字の前記セットをレンダリングするよう構成されている、請求項９に記載のコンピュータ・プログラム製品。
【請求項１１】
前記方法により、
前記始動要求を前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して受信し、
前記サーバＩＭＥによって前記始動要求を前記仮想アプリケーションへ転送し、
前記サーバＩＭＥによって前記仮想アプリケーションから前記始動応答を受信するよう構成され、
前記始動応答を、前記通信チャネルを介して前記クライアントＩＭＥに返すよう構成されている、請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記方法により、
前記合成要素における変化に応答して、更新された座標応答を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ送信するよう構成され、
前記更新された座標応答が、
（ｉ）更新されたカーソル位置、または
（ｉｉ）前記合成ウィンドウの前記エクステント・エリアを示す座標の更新されたセットのうちの１つを示すよう構成されている、請求項９に記載のコンピュータ・プログラム製品。
【請求項１３】
前記方法により、
前記ユーザが前記クライアント・マシン上で前記表示ウィンドウを動かした場合には、さらなる更新された座標応答を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ送信し、
クライアントＩＭＥが、
（ｉ）前記カーソル位置、または
（ｉｉ）前記合成ウィンドウのうちの１つの隣に前記候補ウィンドウを引き続き表示することを可能にするよう構成されている、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
メモリ内に格納されている命令を実行するために前記メモリに結合されているプロセッサのセットを含む制御回路を含むサーバ装置であって、
前記制御回路が、
クライアント・マシン上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）と、
サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立するよう構成され、
該通信チャネルが、前記クライアントＩＭＥが前記サーバＩＭＥを介して仮想アプリケーションと対話することを可能にし、
該仮想アプリケーションが、前記サーバ上で稼働し、スクリーン出力を提供し、
該スクリーン出力が、前記クライアント・マシン上にレンダリングされ、前記クライアントＩＭＥは、前記クライアント・マシンにインストールされ、前記クライアント・マシンを操作するユーザにより選択されるＩＭＥであり、前記通信チャネルは、前記クライアントＩＭＥが、前記サーバＩＭＥをプロキシとして使用して仮想アプリケーションと対話することを可能にし、
前記クライアントＩＭＥから前記通信チャネルを介して受信されたＩＭＥデータを前記サーバＩＭＥによって前記仮想アプリケーションへ中継して、前記仮想アプリケーションに前記ＩＭＥデータを提供するよう構成され、
前記ＩＭＥデータが、前記クライアント・マシンへのユーザ入力に応答して前記クライアントＩＭＥによって生成され、（ｉ）合成文字のセットおよび表示属性を含む合成要素と、（ｉｉ）前記合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動する要求を提供する始動要求と、を含み、
前記サーバＩＭＥによって前記仮想アプリケーションから受信されたアプリケーション情報を前記サーバＩＭＥによって前記通信チャネルを介して前記クライアントＩＭＥへ中継して、前記クライアントＩＭＥに前記アプリケーション情報を提供し、前記アプリケーション情報が、前記始動要求に応答して前記仮想アプリケーションによって生成され、前記アプリケーション情報が、前記仮想アプリケーションが候補ウィンドウを表示するかどうかを示す始動応答を含み、
前記始動応答を返したことに応答して、および前記始動応答が、前記仮想アプリケーションが前記候補ウィンドウを表示することを示しているのに伴って、
前記制御回路が、
前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して候補リスト要素を受信し、
前記サーバＩＭＥによって前記候補リスト要素を前記仮想アプリケーションへ転送し、
前記仮想アプリケーションによって前記候補リスト要素を使用して前記仮想アプリケーションの前記スクリーン出力内に前記候補ウィンドウをレンダリングするように構築および構成されている、サーバ装置。
【請求項１５】
前記通信チャネルを介して受信された前記ＩＭＥデータが、
ユーザ入力アクションに応答して前記クライアントＩＭＥによって生成された合成始動メッセージをさらに含み、
前記制御回路が、前記合成始動メッセージおよび前記合成要素を受信したことに応答して、前記仮想アプリケーションによって、前記仮想アプリケーションの前記スクリーン出力内に合成ウィンドウを表示して、前記表示属性を使用して合成文字の前記セットをレンダリングするようにさらに構築および構成されている、請求項１４に記載のサーバ装置。
【請求項１６】
前記制御回路が、
前記始動要求を前記サーバＩＭＥによって前記クライアントＩＭＥから前記通信チャネルを介して受信し、
前記サーバＩＭＥによって前記始動要求を前記仮想アプリケーションへ転送し、
前記サーバＩＭＥによって前記仮想アプリケーションから前記始動応答を受信するよう構成され、
前記始動応答を、前記通信チャネルを介して前記クライアントＩＭＥに返すようにさらに構築および構成されている、請求項１５に記載のサーバ装置。
【請求項１７】
前記クライアントＩＭＥおよび前記サーバＩＭＥがそれぞれ、ＩＭＥ設定を識別するそれぞれのコンパートメントを有し、
前記制御回路が、前記サーバＩＭＥのコンパートメント設定を前記クライアントＩＭＥのコンパートメント設定と同期化し、それによって、いずれのＩＭＥの前記コンパートメント設定に対して行われたいかなる変更も、両方のＩＭＥの前記コンパートメント設定において実施されるようにさらに構築および構成されている、請求項１４に記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想アプリケーション・クライアントとサーバとの間におけるインプット・メソッド・エディタ（ＩＭＥ）アクティビティーの調整方法に関する。
【背景技術】
【０００２】
オペレーティング・システムは、一般的に、人間の言語の文字をソフトウェア・アプリケーションへと入力することを支援するためにＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）をサポートしている。たとえば、ＩＭＥは、繁体字中国語、日本語、および韓国語の文字を入力するために提供されており、これらに関しては、対応するキーボード・ボタンが提供されていない。一般的な構成においては、ＩＭＥは、稼働中のアプリケーション、たとえば、ワード・プロセッシング・ドキュメント、スプレッドシート、ウェブ・ブラウザなどへの文字入力を支援するために、合成ウィンドウおよび候補ウィンドウなどのＩＭＥ要素を提示するヘルパー・アプリケーションとして稼働する。
【０００３】
たとえば、ユーザのキーボード・レイアウトは、簡体字中国語（たとえばピンイン）、日本語、または韓国語などをサポートすることができる。ユーザがキーボード・ボタンをタイプすると、これに応答してＩＭＥは、合成ウィンドウを生成する。合成ウィンドウは、表示属性に従って表示される合成文字を含む。合成文字は、アプリケーションへと入力されるか、または入力されない場合がある一時的な文字である。合成文字の表示属性は、合成文字を強調し、既に確定されている文字から合成文字を区別し、合成文字のステータスを識別するために、合成文字がどのように表示されるかを指定する。いくつかの例において、合成文字は、単に（たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｐｉｎｙｉｎ  ＩＭＥにおけるように）、直接のキーボード入力が反映される。その他の例においては、合成文字は、（たとえば、Ｇｏｏｇｌｅ  Ｐｉｎｙｉｎ  ＩＭＥにおけるように）ＩＭＥがキーボード入力からターゲット言語への変換を行った複雑な文字である。
【０００４】
ＩＭＥが合成ウィンドウを生成するのと同時に、ＩＭＥは、候補ウィンドウも生成する。候補ウィンドウは、候補リスト、すなわち、キーボード入力に対応するターゲット言語における１または複数の文字に関する予測のリストを含む。たとえば、ユーザは、ターゲット言語における文字が話されたときに発音される方法と同様に発音されるキーボード・シンボルを入力することができる。ユーザがアプリケーションへのキーボード入力をタイプするにつれて、ＩＭＥは、さらなるユーザ入力に基づいて合成文字および候補リストを動的に更新して絞り込む。ユーザは、たとえば、候補リスト上のアイテムをクリックすることによって、矢印キーを使用して「エンター」もしくは「スペースバー」をクリックすることによって、または候補リスト上のアイテムを識別する数字を入力することによって、候補リストから１または複数の文字を選択することができる。ユーザが候補リストから候補を選択すると、ＩＭＥは、選択された１または複数の文字をアプリケーションへと（たとえば、ドキュメント、セル、入力フィールドなどへと）挿入する。
【０００５】
Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ、Ｍｉｃｒｏｓｏｆｔ  Ｎｏｔｅｐａｄ、およびＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄｐａｄなど、いわゆる「部分的にＩＭＥを認識する」アプリケーションに関しては、アプリケーションは、合成要素を表示することを担当するが、候補ウィンドウを表示することは担当しない。ＩＭＥは、ユーザ入力に基づいて合成要素を生成し、これらの要素をアプリケーションに提供する。アプリケーションは次いで、現在のカーソル位置において合成要素を表示する。同時にＩＭＥは、合成要素の隣に候補ウィンドウを表示する。Ｍｉｃｒｏｓｏｆｔ  Ｃｏｍｍａｎｄなど、いわゆる「完全にＩＭＥを認識する」アプリケーションに関しては、アプリケーションは、合成要素および候補リスト要素の両方を表示することを担当する。これらのケースにおいては、ＩＭＥは、これらの要素を生成し、これらの要素をアプリケーションに提供し、アプリケーションは、自分自身のプログラミングに従ってこれらの要素を表示する。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ユーザは、ローカルに稼働しているアプリケーションへと文字を入力するためだけでなく、仮想アプリケーションへと文字を入力するためにもＩＭＥを採用したいと望む場合がある。知られているように、「仮想アプリケーション」は、リモート・サーバからホストされているがクライアント・マシン上でローカルにユーザ・インターフェースを提示するアプリケーションである。仮想アプリケーションは、仮想デスクトップのコンテキストにおいて、またはデスクトップ・コンテキストを伴わずにアプリケーション・ウィンドウにおいて提供されることが可能である。仮想アプリケーションは、仮想デスクトップにおいて提供されるか否かにかかわらず、クライアント・マシン上でローカルに稼働されるアプリケーションと同様のルック・アンド・フィールを有することができる。しかしながら、舞台裏では、ローカルのルック・アンド・フィールを保持するために、クライアントとサーバとの間においてデータがやり取りされている。
【０００７】
残念なことに、ユーザが、言語の文字を仮想アプリケーションへと入力するためにＩＭＥを採用したいと望む場合には、ローカルでの実行の印象を保持することは困難であることがわかっている。たとえば、ユーザが、文字を仮想アプリケーションへと入力するためにローカル・クライアントのＩＭＥを呼び出したいと望む場合があるが、クライアントとサーバとの間においてＩＭＥ動作の通信を可能にする構造が存在しない場合がある。結果として、いくつかのＩＭＥ機能は、ローカルに稼働されているアプリケーションに対して働くのと同じ方法では仮想アプリケーションに対して働かない場合があり、結果的にユーザ経験が損なわれる。仮想アプリケーションのいくつかのサーバは、自分自身のＩＭＥを提供し、これらのＩＭＥをユーザがリモートで動作させることができる。しかしこのようなＩＭＥは、ユーザが好むＩＭＥとは異なる場合がある。したがって、これらの状況においてもユーザ経験が損なわれる。
【課題を解決するための手段】
【０００８】
従来のアプローチとは対照的に、人間言語の文字を仮想アプリケーションへと入力するための改良された技術は、クライアント・マシン上で稼働するクライアントＩＭＥと、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立して、クライアントＩＭＥが、プロキシとしてサーバＩＭＥを使用して、サーバ上で稼働する仮想アプリケーションと対話することを可能にするステップを含む。サーバＩＭＥは、クライアントＩＭＥからの情報を仮想アプリケーションへ中継する。サーバＩＭＥはまた、仮想アプリケーションからの情報をクライアントＩＭＥへ中継する。したがってサーバＩＭＥは、クライアントＩＭＥが、ローカル・アプリケーションと対話するかのように仮想アプリケーションと対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。ユーザは、自分の好ましいクライアントＩＭＥを引き続き採用することができ、このようなＩＭＥは、仮想アプリケーションとともに使用される場合に、ローカル・アプリケーションとともに使用される場合と同様に動作する。
【０００９】
一例においては、サーバＩＭＥは、クライアントＩＭＥによって生成された合成要素を仮想アプリケーションへ中継し、それによって仮想アプリケーションは、ローカル・アプリケーションが表示するのと同じ様式で合成ウィンドウを表示することができる。
【００１０】
別の例においては、サーバＩＭＥは、仮想アプリケーションから合成ウィンドウの座標またはカーソルの座標を入手し、これらの座標をクライアントＩＭＥに提供し、それによってクライアントＩＭＥは、合成ウィンドウまたはカーソルの隣に候補リストを表示することができる。
【００１１】
別の例においては、サーバＩＭＥは、候補リストを仮想アプリケーションが表示すべきか、またはクライアントＩＭＥが表示すべきかを示す情報を仮想アプリケーションから入手する。サーバＩＭＥは、この情報をクライアントＩＭＥに送信し、それによってクライアントＩＭＥは、自分自身で候補リストを表示するか、または候補ウィンドウ要素をサーバへ送信することができ、それによって仮想アプリケーションは、候補ウィンドウを表示することができる。
【００１２】
特定の実施形態は、人間言語の文字を仮想アプリケーションへと入力する方法を対象としている。この方法は、クライアント・マシン上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）と、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立するステップであって、通信チャネルが、クライアントＩＭＥがサーバＩＭＥを介して仮想アプリケーションと対話することを可能にする、ステップを含む。仮想アプリケーションは、サーバ上で稼働し、スクリーン出力を提供し、スクリーン出力は、クライアント・マシン上にレンダリングされる。この方法は、クライアントＩＭＥから通信チャネルを介して受信されたＩＭＥデータをサーバＩＭＥによって仮想アプリケーションへ中継して、仮想アプリケーションにＩＭＥデータを提供するステップであって、ＩＭＥデータが、クライアント・マシンへのユーザ入力に応答してクライアントＩＭＥによって生成されるステップをさらに含む。この方法はまた、サーバＩＭＥによって仮想アプリケーションから受信されたアプリケーション情報をサーバＩＭＥによって通信チャネルを介してクライアントＩＭＥへ中継して、クライアントＩＭＥにアプリケーション情報を提供するステップをさらに含む。
【００１３】
その他の実施形態は、コンピュータ・プログラム製品を対象としている。このコンピュータ・プログラム製品は、制御回路によって実行されたときに、上述の方法など、人間言語の文字を仮想アプリケーションへと入力する方法を制御回路に実行させる命令を有する非一時的なコンピュータ可読メディアのセットを含む。
【００１４】
また、さらなる実施形態は、上述の方法など、人間言語の文字を仮想アプリケーションへと入力する方法を実行するように構築および構成されているサーバ装置を対象としている。いくつかの実施形態は、単一のロケーションにおいて実行されるアクティビティーを含み、その一方でその他の実施形態は、コンピュータ化された環境を介して（たとえば、ネットワークを介して）分散されるアクティビティーを含む。
【００１５】
前述の概要は、本明細書において提示されている例示的な特徴を読者が容易に理解することを支援するために例示の目的で提示されており、限定的であることを意図されているものではない。
【００１６】
前述のおよびその他の特徴および利点は、添付の図面において示されている本発明の特定の実施形態についての以降の説明から明らかになるであろう。それらの図面においては、同様の参照文字は、別々の図を通じて同じまたは同様の部分を指している。
【図面の簡単な説明】
【００１７】
【図１】本明細書の改良された技術の実施形態を実践することができる例示的な環境のブロック図である。
【図２】図１のクライアントＩＭＥによって生成された例示的な合成要素を示すスクリーンショットであり、これらの合成要素は、仮想アプリケーションにおいて現在のカーソル位置の後に続く。
【図３】クライアントＩＭＥが仮想アプリケーションと対話することを可能にするための例示的な通信を示すブロック図である。
【図４】クライアントＩＭＥおよびサーバＩＭＥのためのＩＭＥコンパートメントどうしの例示的な同期化を示すスクリーンショットである。
【図５】図１の環境においてクライアントＩＭＥを初期化し、動作させるためのアクティビティーの例示的なシーケンスを示すフローチャートである。
【図６】人間言語シンボルを仮想アプリケーションへと入力する例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の実施形態について説明する。このような実施形態は、本発明のさまざまな特徴および原理を例示するために例として提供されており、本明細書の発明は、開示されている特定の例示的な実施形態よりも広範である。
【００１９】
人間言語の文字を仮想アプリケーションへと入力するための改良された技術は、クライアント・マシン上で稼働するクライアントＩＭＥと、サーバ上で稼働するサーバＩＭＥとの間において通信チャネルを確立して、クライアントＩＭＥが、プロキシとしてサーバＩＭＥを使用して、サーバ上で稼働する仮想アプリケーションと対話することを可能にするステップを含む。したがってサーバＩＭＥは、クライアントＩＭＥが、ローカル・アプリケーションと対話するかのように仮想アプリケーションと対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。
【００２０】
図１は、本明細書の改良された技術の実施形態を実践できる例示的な環境１００を示している。ここでは、クライアント・マシン（「クライアント」）１１０が、ネットワーク１３０を介してサーバ装置（「サーバ」）１２０に接続している。ネットワーク１３０は、任意のタイプのネットワークまたはネットワークの組合せ、たとえば、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、および／またはその他の何らかのタイプのネットワークもしくはネットワークの組合せなどであることが可能である。サーバ１２０は、仮想化ソフトウェアを備えており、仮想化ソフトウェアは、サーバ１２０が内部でアプリケーション・インスタンス（「アプリケーション」）を実行することを可能にする一方、たとえば、スクリーンシェアリングおよび／またはその他の手段を介して、それらのアプリケーションのユーザ・インターフェースがクライアント・マシン１１０などのクライアント・マシン上にレンダリングされることを可能にする。サーバ１２０上の仮想化ソフトウェアは、アプリケーション仮想化および／または完全なデスクトップ仮想化をサポートすることができ、本明細書において開示されている改良された技術は、両方のケースにおいて当てはまることが意図されている。
【００２１】
知られているように、「アプリケーション仮想化」とは、サーバがアプリケーション・インスタンスを稼働させる一方、アプリケーションのユーザ・インターフェースをクライアントへエクスポートする構成を指す。たとえば、サーバ上で稼働する仮想アプリケーションは、クライアントのデスクトップ上のアプリケーション・ウィンドウ内に現れ、ユーザは、アプリケーション・ウィンドウ内で、たとえば、ユーザのキーボード、マウスなどを使用して、クライアント上の仮想アプリケーションと対話することができる。
【００２２】
対照的に、「デスクトップ仮想化」とは、サーバがユーザの代わりに、自分自身のデスクトップおよびアプリケーションを完備して、ユーザ・セッション全体を稼働させる構成を指す。サーバは、仮想デスクトップをユーザのマシンへエクスポートし、ユーザのマシンは、仮想デスクトップをスクリーン全体に、またはマシン自体のデスクトップ上のウィンドウ内に表示する。ユーザは、仮想デスクトップ内のアプリケーションを始動して、これらのアプリケーションと対話することができ、ネイティブ・デスクトップを使用するのと同じ方法で仮想デスクトップを使用することができる。
【００２３】
図１は、クライアント１１０の、およびサーバ１２０の例示的な実施態様をさらに詳細に示している。これらの例は簡略化されており、限定的であるよりもむしろ例示的であるように意図されている。
【００２４】
示されているように、サーバ１２０は、１または複数のネットワーク・インターフェース１６０と、プロセッサ１６２のセットと、メモリ１７０とを含む。ネットワーク・インターフェース１６０は、たとえば、ネットワーク１３０を介して受信された電子信号および／または光信号を、サーバ１２０によって使用するための電子的な形態へ変換するための１または複数のネットワーク・インターフェース・アダプタを含む。プロセッサ１６２のセットは、１または複数の処理チップ、コア、および／またはアセンブリ、ならびに関連付けられているコプロセッサおよびチップセットを含む。メモリ１７０は、揮発性メモリ（たとえば、ＲＡＭ）、および不揮発性メモリ（たとえば、１または複数のＲＯＭ、ディスク・ドライブ、ソリッド・ステート・ドライブなど）の両方を含む。プロセッサ１６２のセットおよびメモリ１７０は、ともに制御回路を形成し、制御回路は、本明細書において説明されているさまざまな方法および機能を実行するように構築および構成されている。またメモリ１７０は、実行可能な命令の形態で実現されるさまざまなソフトウェア構造を含む。実行可能な命令がプロセッサ１６２のセットによって稼働されたときに、プロセッサ１６２のセットは、ソフトウェア構造の動作を実行させられる。特定のソフトウェア構造が特に示され説明されているが、メモリ１７０は典型的には、オペレーティング・システム、さまざまなアプリケーション、プロセス、およびデーモンなど、示されていないその他の多くのソフトウェア構造を含むことがわかる。サーバ１２０は単一のマシンとして示されているが、サーバ１２０は、代替的に、たとえば、データ・センター、サーバ・ファーム、もしくは、「クラウド」内の任意の場所におけるマシンのバンクなど、複数のマシンとして、および／または１もしくは複数の仮想マシンとして実装されてもよい。サーバ１２０は、モバイル・デバイス、たとえば、スマートフォン、タブレットなどとして実装されてもよいが、この構成は、あまり一般的ではないと予想される。
【００２５】
メモリ１７０内で、サーバ１２０は、サーバ仮想化コンポーネント１７２を「含む」、すなわち、ソフトウェア命令の実行によって実現する。サーバ仮想化コンポーネント１７２は、サーバ・エージェント１７４、サーバＩＭＥ１７６、および仮想アプリケーション１７８を含む。サーバＩＭＥ１７６および仮想アプリケーション１７８は、代替的に、サーバ仮想化コンポーネント１７２の外部に、たとえば、メモリ１７０内の独立したコンポーネントとして、またはその他のコンポーネントの部分として提供されてもよい。サーバ・エージェント１７４は、インターフェース１７６ａを介した、サーバＩＭＥ１７６との動作可能な通信状態で配置されている。またサーバＩＭＥ１７６は、インターフェース１７８ａを介した、仮想アプリケーション１７８との動作可能な通信状態で配置されている。インターフェース１７６ａおよび１７８ａは、たとえば、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）、システム・メッセージ、またはその他の何らかの１もしくは複数の形態のインターフェースを使用して実装されてもよい。
【００２６】
サーバ１２０上のサーバ・エージェント１４４は、クライアント１１０上のクライアント・エージェント１４４と通信するように構成されている。サーバ・エージェント１７４およびクライアント・エージェント１４４は、サーバ１２０とクライアント１１０との間における通信チャネル１８０を確立する。チャネル１８０は、ネットワーク１３０を介して物理的に実装され、ユーザ入力関連の情報をサーバ１２０とクライアント１１０との間においてやり取りするリアルタイムの（またはリアルタイムに近い）手段を提供する。チャネル１８０は、サーバ１２０またはクライアント１１０のいずれかによるアクションに基づいて確立されることが可能であり、「仮想セッション」、すなわち、アプリケーション仮想化セッションまたはデスクトップ仮想化セッション（どちらが該当するかにかかわらず）の持続時間にわたって保持されることが可能である。
【００２７】
図１は、単一の仮想アプリケーション１７８を示しているが、サーバ１２０は、任意の数の仮想アプリケーションをホストすることができる。また、仮想デスクトップは示されていないが、示されている仮想アプリケーション１７８は仮想デスクトップ内で稼働されることが可能である。複数の仮想デスクトップが、たとえば別々のユーザごとに提供されることが可能であり、それぞれの仮想デスクトップ内で任意の数の仮想アプリケーションが稼働されることが可能である。一例においては、仮想セッションごとに１つのサーバ・エージェント１７４が提供される。しかしながら、仮想アプリケーションごとに１つのサーバＩＭＥ１７６が提供されることが可能であり、それぞれの仮想アプリケーション１７８が自分自身のサーバＩＭＥ１７６を有する状態となる。したがって、たとえば、単一の仮想セッションにおける複数の仮想アプリケーション１７８は、自分自身のサーバＩＭＥインスタンスをそれぞれ有する一方で同じサーバ・エージェント１７４インスタンスを共有することが可能である。
【００２８】
示されている例においては、クライアント・マシン１１０は、ネットワーク・インターフェース１３０、プロセッサ１３２、およびメモリ１４０を含む。プロセッサ１３２のセットおよびメモリ１４０は、ともに制御回路を形成し、制御回路は、説明されているさまざまな方法および機能を実行するように構築および構成されている。クライアント・マシン１１０はまた、ディスプレイ１５０（たとえば、モニタ、スクリーン、タッチ・スクリーン、テレビジョンなど）を含む。メモリ１４０は、実行可能な命令の形態で実現されるさまざまなソフトウェア構造を含む。これらの実行可能な命令がプロセッサ１４２のセットによって稼働されたときに、プロセッサ１４２のセットは、これらのソフトウェア構造の動作を実行させられる。クライアント・マシン１１０はコンピュータとして示されているが、クライアント・マシン１１０は、広範囲のマシン、デバイス、およびアプライアンス、たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、タブレット、パーソナル・リーダ、セットトップ・ボックス、ビデオ・ストリーミング・デバイス、スマートＴＶ、ゲーミング・システム、スマート・アプライアンスなど、ならびにそれらの組合せを使用して実装されることが可能である。
【００２９】
クライアント１１０は、クライアント仮想化コンポーネント１４２およびクライアントＩＭＥ１４６を含む。クライアント仮想化コンポーネント１４２は、クライアント・エージェント１４４を含む。クライアント・エージェント１４４は、インターフェース１４６ａを介した、クライアントＩＭＥ１４６との動作可能な通信状態で配置されている。インターフェース１４６ａは、たとえば、ＡＰＩ、システム・メッセージ、またはその他の何らかの形態のインターフェースを使用して実装されることが可能である。
【００３０】
クライアント仮想化コンポーネント１４２は、サーバ１２０との通信セッションを確立および保持すること、サーバ１２０から受信された仮想化されたアプリケーションのおよび／または仮想化されたデスクトップのスクリーン・コンテンツを表示すること、ならびにユーザ入力を、たとえば、キーボード、マウスなど（または同等のソフトウェア実施機能）からサーバ１２０へ導くことなどによって、アプリケーション仮想化および／またはデスクトップ仮想化に関するクライアント・サポートを提供する。
【００３１】
クライアント１１０上で稼働するクライアントＩＭＥ１４６は、直接のキーボード入力に適していない非表音文字などの人間言語シンボルのユーザ入力を容易にする。ユーザは、ユーザ自身の好みに基づいてクライアントＩＭＥ１４６をインストールすることができる。簡潔にするために単一のクライアントＩＭＥ１４６のみが示されているが、クライアント・マシン１１０は、たとえば、さまざまなターゲット言語に関する、および／またはさまざまなベンダーからの任意の数のクライアントＩＭＥを稼働させることができ、ユーザは、仮想セッション中にさまざまなクライアントＩＭＥの間において切り替えを行うことができる。
【００３２】
例示的な動作においては、クライアント・マシン１１０のユーザ１１２が、たとえば、プログラムを起動することによって、またはブラウザを使用して特定のウェブ・アドレスへナビゲートすることによって仮想セッションを始動する。ユーザ１１２によるこのアクションに応答して、サーバ１２０は、たとえば、コンテナにおいて仮想アプリケーション１７８を開くことによって、および／または新たなデスクトップ・セッションを作成することによって、仮想セッションをインスタンス化する。クライアント仮想化コンポーネント１４２は、サーバ仮想化コンポーネント１７２との間で調整を行って、クライアント・エージェント１４４とサーバ・エージェント１７４との間においてチャネル１８０を確立する。サーバ１２０は、仮想アプリケーション１７８の、または仮想デスクトップ全体のユーザ・インターフェースをクライアント１１０へエクスポートし、クライアント１１０は、仮想アプリケーション１７８または仮想デスクトップのグラフィカル出力をディスプレイ１５０上に表示する。
【００３３】
チャネル１８０が確立されて仮想アプリケーション１７８が稼働している状態で、ユーザ１１２は、続けてクライアントＩＭＥ１４６を起動することができる。たとえば、ユーザ１１２は、普通のＱＵＥＲＴＹスタイルのキーボードを使用して繁体字中国語の文字をドキュメントへと入力するためにワード・プロセッサまたはＥメール・プログラムを使用したいと望む可能性がある。
【００３４】
ユーザがクライアントＩＭＥ１４６を動作させたときに、クライアントＩＭＥ１４６は、ＩＭＥデータ１８２を生成する。ＩＭＥデータ１８２は、インターフェース１４６ａを介してクライアント・エージェント１４４へ流れ、チャネル１８０を介してサーバ・エージェント１７４へ転送される。サーバ１２０内で、ＩＭＥデータ１８２は、サーバＩＭＥ１７６へ流れ、サーバＩＭＥ１７６は、ＩＭＥデータ１８２を仮想アプリケーション１７８に提供する。同様に、仮想アプリケーション１７８が動作したときに、仮想アプリケーション１７８は、ＩＭＥ動作に関連するアプリケーション・データ１８４を生成する。サーバＩＭＥ１７６は、アプリケーション・データ１８４を受信し、アプリケーション・データ１８４を、チャネル１８０を介してクライアントＩＭＥ１４６に返す。したがってサーバＩＭＥ１７６は、クライアントＩＭＥ１４６のためのプロキシまたは中継器として動作して、ＩＭＥデータ１８２を仮想アプリケーション１７８へ転送し、アプリケーション・データ１８４をクライアントＩＭＥ１４６に返す。たとえば、クライアントＩＭＥ１４６が、ユーザ入力に応答して、合成要素および候補リストなどのＵＩ要素を生成するように動作したときに、サーバＩＭＥ１７６は、クライアントＩＭＥ１４６の代わりに仮想アプリケーション１７８と対話して、ＩＭＥデータ１８２を仮想アプリケーション１７８に提供し、アプリケーション・データ１８４をクライアントＩＭＥ１４６に返す。したがって、エージェント１４４および１７４、サーバＩＭＥ１７６、ならびにチャネル１８０は、クライアントＩＭＥ１４６が、ローカル・アプリケーションと対話するかのように仮想アプリケーション１７８とリモートで対話することを可能にする。
【００３５】
図２は、図１の構成に従って文字を仮想アプリケーション１７８へと入力するためのクライアントＩＭＥ１４６の例示的な動作を示すスクリーンショット２００である。ここでは、クライアントＩＭＥ１４６は、Ｇｏｏｇｌｅ  Ｐｉｎｙｉｎ  ＩＭＥであるが、任意のＩＭＥが使用されてもよい。仮想デスクトップ２１０が、クライアント・マシン１１０のネイティブ・デスクトップ２５０上のウィンドウ２１２内に示されている。仮想デスクトップ２１０は、仮想システム・トレイ２１４を含み、ネイティブ・デスクトップ２５０は、ネイティブ・システム・トレイ２５４を含む。
【００３６】
仮想デスクトップ２１０は、仮想アプリケーション１７８としてＭｉｃｒｏｓｏｆｔ  Ｎｏｔｅｐａｄのインスタンスを稼働させている。Ｎｏｔｅｐａｄは、仮想デスクトップ２１０上のアプリケーション・ウィンドウ２２０内で稼働しているように見える。Ｎｏｔｅｐａｄのみが稼働しているように見えるが、任意の数の仮想アプリケーションが仮想デスクトップ２１０上で稼働することができる。
【００３７】
複数のＩＭＥ要素を図２において見ることができる。たとえば、合成ウィンドウ１５４は、表示属性１５４ｂ（たとえば、示されているようなアンダーライン付け。ただしボールド、カラー、およびその他の設定を含むこともできる）を伴ってレンダリングされている合成文字１５４ａを含む。候補ウィンドウ１５６は、候補リスト１５６ａを含む。ユーザが、キーボード入力（合成ウィンドウ１５４の下に示されている）を提供し、クライアントＩＭＥ１４６は、合成文字１５４ａおよび候補リスト１５６ａを生成することによって応答している。候補リスト１５６ａは、ターゲット言語でのキーボード入力に対するベスト・マッチの予測（図においては番号が付けられている）を提供する。ユーザは、次いで、クライアントＩＭＥ１４６を動作させて、所望の候補、すなわち、ユーザが入力することを意図している候補を選択することができる。ユーザが、たとえば番号を入力することによって選択を行うと、選択された文字は、確定された文字となり、アプリケーションのドキュメントへと入力される。いくつかの確定された文字１５２が示されており、これらの文字１５２は、ユーザによってクライアントＩＭＥ１４６を使用して既に入力されている。示されている例においては、合成文字１５４は、候補リスト１５６ａにおける現在の選択と一致している。
【００３８】
図２はまた、カーソル１５８を示している。カーソル１５８は、合成ウィンドウ１５４の直後に現れ、新たな文字が入力されるにつれて、または異なる幅の文字が選択されるにつれて、前へ進む。
【００３９】
図１の、すなわち、エージェント１４４、エージェント１７４、チャネル１８０、クライアントＩＭＥ１４６、およびサーバＩＭＥ１７６の構成は、クライアントＩＭＥ１４６が、仮想アプリケーション１７８へと文字を入力する際に、ローカル・アプリケーションへと文字を入力する際に行うのとそっくり同じように動作することを可能にする。たとえば、図１の構成は、仮想アプリケーション１７８が、合成ウィンドウ１５４をアプリケーション・ウィンドウ２２０内にレンダリングすることを、すなわち、ＩＭＥデータ１８２をサーバＩＭＥ１７６へ送信することによって可能にし、サーバＩＭＥ１７６は、仮想アプリケーション１７８と通信する。仮想アプリケーション１７８は、クライアントＩＭＥ１４６からの入力に基づいて合成ウィンドウ１５４を、ローカル・アプリケーションが表示するのとちょうど同じように表示する。また、この構成は、クライアントＩＭＥ１４６が候補ウィンドウ１５６を合成ウィンドウ１５４の隣に、または合成ウィンドウが空である場合にはカーソル１５８の隣に配置することを可能にする。たとえば、クライアントＩＭＥ１４６は、合成ウィンドウ１５４またはカーソル１５８のスクリーン座標を要求し、これらのスクリーン座標をアプリケーション・データ１８４として仮想アプリケーション１７８から受信することができる。クライアントＩＭＥ１４６は次いで、候補ウィンドウ１５６を配置する際に、受信された座標を適用することができる。さらにまた、クライアントＩＭＥ１４６は、仮想アプリケーション１７８が自分自身で候補リストを表示することができるかどうかを、すなわち、仮想アプリケーション１７８が、部分的にＩＭＥを認識するか、または完全にＩＭＥを認識するかを示すアプリケーション・データ１８４を仮想アプリケーション１７８から入手することができる。受信されたアプリケーション・データ１８４に基づいて、クライアントＩＭＥ１４６は、続いて（Ｎｏｔｅｐａｄのように、部分的にＩＭＥを認識するアプリケーションに関しては）自分自身で候補ウィンドウ１５６を表示するか、または（Ｃｏｍｍａｎｄのように、完全にＩＭＥを認識するアプリケーションに関しては）候補リスト１５６ａおよび関連付けられている設定を（チャネル１８０を介して）仮想アプリケーション１７８へ送信して、仮想アプリケーション１７８が自分自身で候補リストを表示することを可能にすることができる。
【００４０】
図３は、チャネル１８０を介した、クライアントＩＭＥ１４６と仮想アプリケーション１７８との間における例示的な通信を示している。この通信は、クライアントＩＭＥ１４６が、ローカル・アプリケーションとともに動作するかのように仮想アプリケーション１７８と動作することを可能にする。
【００４１】
ここでは、ユーザ・アクションに応答して、たとえば、ユーザが第１のキーボード・シンボルをクライアントＩＭＥ１４６へと入力したことに応答して、クライアントＩＭＥ１４６によってＩＭＥデータ１８２として合成始動メッセージ３１０が生成される。合成始動メッセージ３１０は、クライアントＩＭＥ１４６からクライアント・エージェント１４４へ、チャネル１８０を介してサーバ・エージェント１７４へ、そしてサーバＩＭＥ１７６へ伝搬する。サーバＩＭＥ１７６は、合成始動メッセージ（または合成始動メッセージの処理されたバージョン）を仮想アプリケーション１７８に提供する。それに応答して、仮想アプリケーション１７８は、合成手順を始動する用意を行う。
【００４２】
合成要素３１２は、合成文字１５４ａおよび表示属性１５４ｂを含む。クライアントＩＭＥ１４６は、ユーザ入力に応答してこれらの合成要素３１２を生成し、これらの合成要素３１２を、チャネル１８０を介してサーバＩＭＥ１７６へ送信し、サーバＩＭＥ１７６は、これらの合成要素３１２を仮想アプリケーション１７８に提供する。次いで仮想アプリケーション１７８は、受信された合成要素を使用して合成ウィンドウ１５４を表示する。
【００４３】
始動要求３２０は、合成ウィンドウ内の合成文字のセットに基づいて文字の予測を識別するための候補ウィンドウを始動したいという要求である。始動要求３２０は、サーバＩＭＥ１７６によって受信され、サーバＩＭＥ１７６は、この要求を仮想アプリケーション１７８へ転送する。
【００４４】
アプリケーション１７８は、始動応答３２２を用いて始動要求３２０に答え、アプリケーション１７８は、始動応答３２２を、チャネル１８０を介してクライアントＩＭＥ１４６に返す。始動応答３２２は、仮想アプリケーション１７８が候補ウィンドウ１５６を表示するかどうか、またはクライアントＩＭＥ１４６が候補ウィンドウ１５６を表示するかどうかを示す。たとえば、始動応答３２２は、候補ウィンドウ１５６を表示することを仮想アプリケーション１７８が担当する場合には“ＦＡＬＳＥ”とし、候補ウィンドウ１５６を表示することをクライアントＩＭＥ１４６が担当する場合には“ＴＲＵＥ”とすることが可能である。
【００４５】
始動応答３２２が“ＦＡＬＳＥ”である場合には、クライアントＩＭＥ１４６は、候補リスト要素３３０（たとえば、候補リスト文字、ページ・インデックス、現在のページなど）をサーバＩＭＥ１７６へ送信し、サーバＩＭＥ１７６は、候補リスト要素３３０を仮想アプリケーション１７８に提供する。仮想アプリケーション１７８は次いで、候補リスト要素３３０を使用して仮想アプリケーション１７８のスクリーン出力内に候補ウィンドウ１５６を表示する。これは典型的には、完全にＩＭＥを認識するアプリケーションに関するケースであるということに留意されたい。
【００４６】
しかしながら、始動応答３２２が“ＴＲＵＥ”である場合には、クライアントＩＭＥ１４６は、続いて候補ウィンドウ１５６をディスプレイ１５０上にローカルに表示する。これは典型的には、部分的にＩＭＥを認識するアプリケーションに関するケースであるということに留意されたい。
【００４７】
クライアントＩＭＥ１４６が候補ウィンドウ１５６を表示する状況においては、図１の構成は、クライアントＩＭＥ１４６が候補ウィンドウ１５６を適切なロケーションに、すなわち、ローカル・アプリケーションに関して候補ウィンドウ１５６が配置されるのと同じロケーションに配置することを可能にする。たとえば、クライアントＩＭＥ１４６は、座標要求３４０を、チャネル１８０を介して仮想アプリケーション１７８へ送信する。仮想アプリケーション１７８は、座標要求３４０を受信し、座標応答３４２を提供する。座標応答３４２は、チャネル１８０を介してクライアントＩＭＥ１４６に返される。一例においては、座標応答３４２は、仮想アプリケーション１７８によって表示される合成ウィンドウ１５４のエクステント・エリアを示す座標のセットを提供する。これらの座標は、たとえば、合成ウィンドウ１５４を含む長方形の頂点として表されることが可能である。クライアントＩＭＥ１４６は次いで、候補ウィンドウ１５６を合成ウィンドウ１５４と相対的に、ローカル・アプリケーションに関して配置するのと同じ方法で、たとえば（図２において示されているように）合成ウィンドウ１５４のすぐ下に配置することができる。別の例においては、座標応答３４２は、カーソル１５８の座標を提供する。そのようなケースにおいては、クライアントＩＭＥ１４６は、候補ウィンドウ１５６をカーソル１５８のロケーションと相対的に配置する。いくつかの例においては、座標応答３４２は、合成ウィンドウ１５４が合成文字１５４ａを含む場合には合成ウィンドウ１５４のエクステント・エリアを提供するが、合成ウィンドウ１５４が空である場合にはカーソル１５８の座標を提供する。
【００４８】
合成終了メッセージ３５０は、合成の終了をトリガーする。たとえば、クライアントＩＭＥ１４６は、ユーザが候補リスト１５６ａから候補を選択した後に、合成終了メッセージ３５０を送信する。合成終了メッセージ３５０に応答して、仮想アプリケーション１７８は、確定された文字１５２をアプリケーション・ウィンドウ２２０内に配置し、合成ウィンドウ１５４をクリアする。そして合成手順は完了する。
【００４９】
上述の通信は、新たなキーボード入力をユーザが提供するにつれて任意の回数繰り返されることが可能である。たとえば、クライアントＩＭＥ１４６は、新たなキーボード入力をユーザがタイプし続けていることに応答して、新たな合成要素３１２を繰り返し送信することができる。また、合成ウィンドウ１５４がサイズを変えるにつれて、ならびに／またはユーザがアプリケーション・ウィンドウ２２０および／もしくはデスクトップ・ウィンドウ２１２を移動させるかもしくはサイズ変更するにつれて、座標要求３４０および応答３４２が繰り返されることが可能である。たとえば、クライアントＩＭＥ１４６は、候補ウィンドウ１５６の位置を継続的に更新することができ、それによって候補ウィンドウ１５６は、常に合成ウィンドウ１５４またはカーソル１５８の後に続く。
【００５０】
図４は、例示的なスクリーンショット４００を示している。これは、図２のスクリーンショット２００に類似しているが、システム・トレイ２１４および２５４のさらに接近したビューを提供する。図４はまた、クライアントＩＭＥ１４６のステータス・ウィンドウ４０２を示している。ネイティブ・デスクトップ２５０においては、システム・トレイ２５４は、キーボード・データを解釈する際にクライアント・マシン１１０が適用する人間言語を識別するキーボード言語設定４４０を含む。仮想デスクトップ２１０においては、システム・トレイ２１４は、キーボード言語設定４３０を含む。システム・トレイ２１４内のキーボード言語４３０は、サーバ１２０に関するキーボード言語選択、すなわち、キーボード入力を解釈する際にサーバ１２０が適用する人間言語を識別する。
【００５１】
本明細書のさらなる改良によれば、キーボード言語設定４４０における変更は、キーボード言語設定をクライアント１１０からサーバ１２０へ自動的に同期化することをトリガーする。同期化は、新たなキーボード言語での入力に関して特定のサーバＩＭＥ１７６をアクティブ化することを含むことができる。したがって、たとえば、ネイティブ・デスクトップ４５０におけるキーボード設定４４０を日本語（ＪＰ）から簡体字中国語（ｚｈ−ＣＮ）へ変更することは、仮想デスクトップ２１０におけるキーボード設定４３０およびサーバＩＭＥ１７６を日本語から簡体字中国語へ自動的に切り替えることをトリガーする。このような同期化は、クライアント１１０とサーバ１２０との間においてやり取りされるＩＭＥデータがクライアント１１０およびサーバ１２０の両方によって同じ方法で解釈されることを確実にする。
【００５２】
仮想デスクトップ２１０におけるシステム・トレイ２１４はまた、サーバ・コンパートメント設定４１０を変更するためのオプションを含む。サーバ・コンパートメント設定４１０は、サーバＩＭＥ１７６の設定に関連しており、また、サーバＩＭＥ１７６によって入力されるシンボルの人間言語を指定するために使用されるターゲット言語設定４１０ａと、特定の言語におけるシンボルに関して、これらのシンボルが半角の間隔を使用して入力されるか、または全角の間隔を使用して入力されるかを指定するために使用される幅設定４１０ｂとを含むことができる。さらなるまたはその他のサーバ・コンパートメント設定が提供されることが可能である。
【００５３】
ステータス・ウィンドウ４０２は、クライアント・コンパートメント設定４２０を変更するためのオプションを含む。クライアント・コンパートメント設定４２０は、クライアントＩＭＥ１４６の設定に関連し、ターゲット言語設定（４２０ａ）およびシンボル間隔設定（４２０ｂ）を含むこともできる。さらなるまたはその他のクライアント・コンパートメント設定が提供されてもよい。したがって、クライアント・コンパートメント設定４２０は、サーバ・コンパートメント設定４１０がサーバ側でコントロールするのと同じ設定をクライアント側でコントロールすることがわかる。
【００５４】
さらなる改良によれば、クライアントＩＭＥ１４６のクライアント・コンパートメント設定４２０のうちのいずれかにおける変更は、その設定を、サーバＩＭＥ１７６の対応するサーバ・コンパートメント設定と自動的に同期化すること、およびその逆に、自動的に同期化することをトリガーする。したがって、たとえば、ステータス・ウィンドウ４０２内のクライアント・ターゲット言語設定４２０ａを変更することは、サーバ・ターゲット言語設定４１０ａにおける自動的な変更をトリガーする。同様に、システム・トレイ２１４におけるサーバ間隔設定４１０ｂを変更することは、ステータス・ウィンドウ４０２内のクライアント間隔設定４２０ｂにおける自動的な変更をトリガーする。この同期化は、クライアントＩＭＥ１４６およびサーバＩＭＥ１７６が同じターゲット言語で同じ設定を伴って動作し、それによって、チャネル１８０を介してクライアントＩＭＥ１４６とサーバＩＭＥ１７６との間において送信されたデータが正しく解釈されることを確実にする。
【００５５】
図５は、仮想アプリケーションをサポートするためにクライアント１１０とサーバ１２０との間におけるＩＭＥアクティビティーの調整に含まれる動作５００の例示的なフェーズを示している。これらのフェーズは、オープニング・フェーズ５１０、結合フェーズ５２０、アクティブ化フェーズ５３０、および合成フェーズ５４０を含む。これらのフェーズは典型的には、示されている順序で実行されるが、別のクライアントＩＭＥ１４６が選択された場合にはアクティブ化フェーズ５３０が繰り返されることが可能である。
【００５６】
オープニング・フェーズ５１０中に、仮想セッションが作成される。クライアント１１０は、クライアント・エージェント１４４をインスタンス化し、サーバ１２０は、サーバ・エージェント１７４をインスタンス化する。クライアント・エージェント１４４およびサーバ・エージェント１７４は、クライアント１１０とサーバ１２０との間においてＩＭＥ関連情報を搬送するためにチャネル１８０を確立する。
【００５７】
結合フェーズ５２０中に、サーバ１２０は、チャネル１８０を介してクライアント１１０に連絡を取り、サーバ１２０がサポートする言語など、サーバ１２０自身の機能をクライアントに知らせる。それに応答して、クライアント１１０は、クライアント１１０がサポートする言語など、クライアント１１０の機能を提供する。一例においては、サーバ１２０は次いで、クライアントおよびサーバの両方がサポートするそれぞれの言語に関する言語プロファイルを用意する。サーバは次いで、サポートされる言語を確認する結合コミット・メッセージをクライアントへ送信する。
【００５８】
アクティブ化フェーズ５３０は、ユーザがクライアントＩＭＥ１４６およびターゲット言語を選択したときに始動する。クライアント・エージェント１４４は、選択されたターゲット言語を、チャネル１８０を介してサーバ・エージェント１７４へ通信する。それに応答して、サーバ・エージェント１７４は、サーバＩＭＥ１７６をアクティブ化し（サーバＩＭＥ１７６がまだアクティブ化されていないと想定して）、サーバＩＭＥ１７６を、選択されたターゲット言語のプロファイルを使用して動作するように構成する。現在の仮想セッションがデスクトップ仮想化を実行していて、複数の仮想アプリケーション１７８が稼働している場合には、サーバ・エージェント１７４は、新たにアクティブ化されたサーバＩＭＥ１７６を、すべての稼働しているアプリケーションに対して、仮想セッションに関するシステム・デフォルトＩＭＥとして適用する。このフェーズ中に、クライアント・エージェント１４４はまた、現在のクライアント・キーボード言語（すなわち、設定４４０によって示されているような。図４を参照されたい）をサーバ・エージェント１７４へ送信し、サーバ・エージェント１７４は、サーバ・キーボード言語（すなわち、設定４３０によって示されているような）を、クライアント・キーボード言語と同じであるように設定する。
【００５９】
合成フェーズ５４０は、アクティブ化フェーズの後に続き、クライアント・マシン１１０のユーザが、言語シンボルを入力するためにクライアントＩＭＥ１４６を使用しているときに、クライアント・エージェント１４４とサーバ・エージェント１７４との間におけるチャネル１８０を介した通信を保持することを含む。仮想セッションは、合成フェーズ５４０において仮想セッションの残りの持続時間にわたって、またはユーザがクライアントＩＭＥ１４６、ターゲット言語、および／もしくはキーボード言語を変更するまで、残存することが可能であり、その時点で動作は、アクティブ化フェーズ５３０へ戻り、次いでアクティブ化が完了すると、再び合成フェーズ５４０へ進むことが可能である。
【００６０】
図６は、人間言語シンボルを仮想アプリケーションへと入力するための例示的なプロセス６００を示している。プロセス６００は、たとえば環境１００に関連して、たとえば、図１に関連して説明されているソフトウェア構造によって実行されることが可能であり、これらのソフトウェア構造は、クライアント・マシン１１０のメモリ１４０内に存在してプロセッサ１３２のセットによって稼働され、および／またはサーバ１２０のメモリ１７０内に存在してプロセッサ１６２のセットによって稼働される。プロセス６００のさまざまな行為は、任意の適切な方法で順序付けられることが可能である。したがって、例示されている順序とは異なる順序で行為が実行される実施形態が構築されることが可能であり、これらの実施形態は、いくつかの行為を同時に実行すること（たとえこれらの行為が、例示されている実施形態においては、順次生じるものとして示されていても）を含むことができる。
【００６１】
６１０において、方法６００は、クライアント・マシン１１０上で稼働するクライアントＩＭＥ（Ｉｎｐｕｔ  Ｍｅｔｈｏｄ  Ｅｄｉｔｏｒ）１４６と、サーバ１２０上で稼働するサーバＩＭＥ１７６との間において通信チャネル１８０を確立するステップを含む。通信チャネル１８０は、クライアントＩＭＥ１４６がサーバＩＭＥ１７６を介して仮想アプリケーション１７８と対話することを可能にする。仮想アプリケーション１７８は、サーバ１２０上で稼働し、クライアント・マシン１１０上にレンダリングされるスクリーン出力２２０を提供する。
【００６２】
６２０において、方法６００は、クライアントＩＭＥ１４６から通信チャネル１８０を介して受信されたＩＭＥデータ１８２をサーバＩＭＥ１７６によって仮想アプリケーション１７８へ中継して、仮想アプリケーション１７８にＩＭＥデータ１８２を提供するステップを含む。ＩＭＥデータ１８２は、クライアント・マシン１１０へのユーザ入力に応答してクライアントＩＭＥ１４６によって生成される。
【００６３】
６３０において、方法６００は、サーバＩＭＥ１７６によって仮想アプリケーション１７８から受信されたアプリケーション情報１８４をサーバＩＭＥ１７６によって通信チャネル１８０を介してクライアントＩＭＥ１４６へ中継して、クライアントＩＭＥ１４６にアプリケーション情報１８４を提供するステップをさらに含む。
【００６４】
人間言語の文字を仮想アプリケーションへと入力するための改良された技術について説明してきた。この技術は、クライアント・マシン１１０上で稼働するクライアントＩＭＥ１４６と、サーバ１２０上で稼働するサーバＩＭＥ１７６との間において通信チャネル１８０を確立し、クライアントＩＭＥ１４６が、プロキシとしてサーバＩＭＥ１７６を使用して、サーバ１２０上で稼働する仮想アプリケーション１７８と対話することを可能にするステップを含む。サーバＩＭＥ１７６は、クライアントＩＭＥ１４６からの情報１８２を仮想アプリケーション１７８へ中継する。サーバＩＭＥ１７６はまた、仮想アプリケーション１７８からの情報１８４をクライアントＩＭＥ１４６へ中継する。したがってサーバＩＭＥ１７６は、クライアントＩＭＥ１４６が、ローカル・アプリケーションと対話するかのように仮想アプリケーション１７８と対話することを可能にし、仮想アプリケーションおよびローカル・アプリケーションの両方に関して同様のユーザ経験を促進する。ユーザは、自分の好ましいクライアントＩＭＥを引き続き採用することができ、このようなＩＭＥは、仮想アプリケーションとともに使用される場合に、ローカル・アプリケーションとともに使用される場合と同様に動作する。
【００６５】
特定の実施形態について説明してきたが、多くの代替的な実施形態または変形形態が作成されることが可能である。たとえば、中国語文字などの非表音言語シンボルの入力に関連してＩＭＥについて説明してきたが、本明細書の改良された技術は、これらの機能を実行するＩＭＥに限定されるものではない。たとえば、本明細書の改良された技術は、たとえば、オートコンプリート、手書き文字認識、または話声認識をサポートするためなどに、表音文字を入力するＩＭＥとともに使用されることも可能である。
【００６６】
さらに、本明細書の特定の実施形態を参照しながら特徴が示され説明されているが、このような特徴は、開示されている実施形態およびそれらの異形のうちのいずれかに含まれることが可能であり、本明細書においては含まれている。したがって、いずれかの実施形態に関連して開示されている特徴は、その他のいずれかの実施形態の異形として含まれているということがわかる。
【００６７】
さらにまた、この改良またはこの改良の部分は、磁気ディスク、磁気テープ、コンパクト・ディスク、ＤＶＤ、光ディスク、フラッシュ・ドライブ、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）チップまたはデバイス、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等などの１または複数の非一時的なコンピュータ可読ストレージ・メディア（例として図６においてはメディア６５０として示されている）を含むコンピュータ・プログラム製品として具体化されることが可能である。任意の数のコンピュータ可読メディアが使用されることが可能である。このメディアは、命令とともにエンコードされることが可能であり、これらの命令は、１または複数のコンピュータまたはその他のプロセッサ上で実行されたときに、本明細書において説明されている１または複数のプロセスを実行する。このようなメディアは、製品またはマシンとみなされることが可能であり、１つのマシンから別のマシンへトランスポートすることが可能である。
【００６８】
この文書を通じて使用される際には、「ｃｏｍｐｒｉｓｉｎｇ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｎｔａｉｎｉｎｇ（含む）」、および「ｈａｖｉｎｇ（有する）」という言葉は、何かの特定のアイテム、ステップ、要素、または態様をオープンエンドな様式で示すことを意図されている。また、本明細書において使用される際には、そうではないという具体的な言明がなされていない限り、「セット」という言葉は、何かの１または複数を意味する。このことは、「〜のセット」というフレーズの後に単数形または複数形の目的語が続いているかどうかにかかわらず、および「〜のセット」というフレーズが単数形または複数形の動詞と接合されているかどうかにかかわらず、当てはまる。さらに、本明細書においては、順序を示す表現、たとえば、「第１の」、「第２の」、「第３の」などが、形容詞として使用されているかもしれないが、このような順序を示す表現は、識別の目的で使用されており、具体的に示されていない限り、何らかの順序付けまたはシーケンスを意味することを意図されているものではない。したがって、たとえば、第１のイベントの前もしくは後に、またはたとえ第１のイベントが生じることがなくても、第２のイベントが起こり得る。加えて、ある特定の要素、特徴、または行為を、「第１の」このような要素、特徴、または行為であると本明細書において識別することは、「第２の」またはその他のこのような要素、特徴、または行為も存在しなければならないということを必要とするものと解釈されるべきではない。むしろ、「第１の」アイテムは、唯一のアイテムである場合がある。本明細書においては特定の実施形態が開示されているが、これらは単なる例として提供されているということ、および本発明はこれらの特定の実施形態に限定されるものではないということがわかる。
【００６９】
したがって、本発明の範囲から逸脱することなく、本明細書において開示されている実施形態に対して形式および細部においてさまざまな変更が行われることが可能であるということを当業者なら理解するであろう。
【図１】
0006607876.tif 000002
【図２】
0006607876.tif 000003
【図３】
0006607876.tif 000004
【図４】
0006607876.tif 000005
【図５】
0006607876.tif 000006
【図６】
0006607876.tif 000007