(57)【要約】【課題】レガシ・オペレーティング・システムでユニコード・サポートを提供する装置および方法を提供すること。【解決手段】この装置および方法を用いると、フォーカス・フック・モジュール、キーボード・フック・モジュール、およびキーストローク変換モジュールが、レガシ・オペレーティング・システムに登録される。フォーカス・フック・モジュールは、現在アクティブなアプリケーションと、現在アクティブなアプリケーションがユニコード対応であるかどうかとを判定する。キーボード・フック・モジュールは、入力インターフェースからキーボード・イベントを受け取り、これらのキーボード・イベントをキーストローク変換モジュールに送る。キーストローク変換モジュールは、キーボード・イベントをユニコード文字に変換し、このユニコード文字が、キーボード・フック・モジュールに送り返される。キーボード・フック・モジュールは、次に、ユニコード文字を一時ストレージ・メモリ、たとえばクリップボードに保管する。キーボード・フック・モジュールは、次に、コマンドをアプリケーションに送って、一時ストレージ・メモリの内容を現在アクティブなアプリケーションに貼り付ける。【選択図】図１
2007538295.tif 000002
【特許請求の範囲】
【請求項１】
キーボードからキーストローク入力を受け取るステップと、
前記キーストローク入力を前記キーストローク入力のユニコード表現に変換するステップと、
前記キーストローク入力の前記ユニコード表現を一時ストレージ・メモリに保管するステップと、
前記キーストローク入力の前記ユニコード表現を前記一時ストレージ・メモリからプログラムに貼り付けるステップと
を含む、前記プログラムにテキストを入力する方法。
【請求項２】
現在アクティブなプログラムを識別するステップと、
前記現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップと、
前記現在アクティブなプログラムの識別および前記現在アクティブなプログラムがユニコード機能を有するかどうかに関する前記判定に基づいて、オペレーティング・システム環境のプログラム・コンテキスト内で１つまたは複数のフラグをセットするステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
選択された文字セットを生成するために文字セット選択を受け取るステップであって、前記ユニコード表現への前記キーストローク入力の変換は、前記キーストローク入力を前記選択された文字セットのユニコード表現に変換するステップを含む、前記受け取るステップ
をさらに含む、請求項１に記載の方法。
【請求項４】
前記現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップは、
前記現在アクティブなプログラムの識別子をユニコード機能を有するプログラムのプログラム識別子のリストと比較するステップと、
前記現在アクティブなプログラムの前記識別子がプログラム識別子の前記リストに存在する場合に、前記現在アクティブなプログラムがユニコード機能を有すると判定するステップと
を含む、請求項２に記載の方法。
【請求項５】
前記現在アクティブなプログラムの識別子をプログラム識別子のリストと比較する前記ステップおよび前記現在アクティブなプログラムがユニコード機能を有すると判定する前記ステップは、前記オペレーティング・システムに登録されたフォーカス・フック・モジュールによって実行され、プログラム識別子の前記リストは、前記フォーカス・フック・モジュールにハードコードされている、請求項４に記載の方法。
【請求項６】
前記現在アクティブなプログラムの識別子をプログラム識別子のリストと比較する前記ステップおよび前記現在アクティブなプログラムがユニコード機能を有すると判定する前記ステップは、前記オペレーティング・システムに登録されたフォーカス・フック・モジュールによって実行され、プログラム識別子の前記リストは、前記フォーカス・フック・モジュールによってアクセス可能なデータ・ファイルに保管されている、請求項４に記載の方法。
【請求項７】
現在アクティブなプログラムを識別するステップと、
前記現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップと、
前記現在アクティブなプログラムの識別の結果および前記現在アクティブなプログラムがユニコード機能を有するかどうかの判定の結果を示すメッセージをオペレーティング・システムに送るステップと
をさらに含む、請求項１に記載の方法。
【請求項８】
前記現在アクティブなプログラムは、前記プログラムがユーザによって選択された時に生成されたアクティブ化イベントに基づいて識別される、請求項２に記載の方法。
【請求項９】
プログラムにテキストを入力するためのプログラムであって、
キーボードからキーストローク入力を受け取る第１命令と、
前記キーストローク入力を前記キーストローク入力のユニコード表現に変換する第２命令と、
前記キーストローク入力の前記ユニコード表現を一時ストレージ・メモリに保管する第３命令と、
前記キーストローク入力の前記ユニコード表現を前記一時ストレージ・メモリから前記プログラムに貼り付ける第４命令と
を含み、これらの命令をコンピュータに実行させるためのコンピュータ可読媒体内のプログラム。
【請求項１０】
キーボードからキーストローク入力を受け取る手段と、
前記キーストローク入力を前記キーストローク入力のユニコード表現に変換する手段と、
前記キーストローク入力の前記ユニコード表現を一時ストレージ・メモリに保管する手段と、
前記キーストローク入力の前記ユニコード表現を前記一時ストレージ・メモリからプログラムに貼り付ける手段と
を含む、前記プログラムにテキストを入力する装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、レガシ・オペレーティング・システムでユニコード入力を可能にする装置および方法を対象とする。具体的に言うと、本発明は、ユニコード・サポートまたは特定の選択された筆記文字に関するユニコード・サポートを有しないオペレーティング・システムでアプリケーションが実行されている場合であってもユニコードをサポートするアプリケーションと共に使用することができる、キーボード・ストロークをユニコード表現に変換する入力方式エディタ（ｉｎｐｕｔ  ｍｅｔｈｏｄ  ｅｄｉｔｏｒ）を介して変換されたキーストロークを受け取る機構を対象とする。
【背景技術】
【０００２】  Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社のＷｉｎｄｏｗｓ（Ｒ）  ２０００（商標）およびＷｉｎｄｏｗｓ（Ｒ）  ＸＰ（商標）などの現代のオペレーティング・システムは、入力方式エディタ（ＩＭＥ）を介するユニコード入力を完全にサポートする。ユニコードは、１文字ごとに１バイトではなく２バイトを使用する、ＡＳＣＩＩ文字セットのスーパーセットである。その結果、ユニコード文字セットは、ＡＳＣＩＩの２５６文字ではなく、６５５３６文字の組合せを扱うことができる。これによって、ＡＳＣＩＩ文字セットでは表現できない世界中の言語の多くを、ユニコードで表すことが可能になる。【０００３】  入力方式エディタ（ＩＭＥ）は、コンピュータ・ユーザが、日本語文字などの複雑な文字および記号を標準キーボードを使用して入力できるようにするプログラムである。そのようなＩＭＥの例に、ＩＢＭ  Ｉｎｄｉｃ  ＩＭＥ、Ｍｉｃｒｏｓｏｆｔ  Ｇｌｏｂａｌ  ＩＭＥ  ５．０２、およびＧｌｏｂａｌ  ＩＭＥ  ｆｏｒ  Ｏｆｆｉｃｅ  ＸＰが含まれる。ＩＭＥは、キーボード・イベントをとり、これを、オペレーティング・システムまたはオペレーティング・システム環境内で稼動するアプリケーションあるいはその両方と共に使用できるユニコード表現に変換する。【０００４】  Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）９５（商標）などのレガシ・オペレーティング・システムでは、そのようなＩＭＥフレームワークが存在しないか、文字セットが非常に少数の特定の言語に制限されている。したがって、たいてい、レガシ・オペレーティング・システムは、ユニコード文字セットをサポートできないので、インド筆記文字（たとえば、デバナーガリ文字）、日本筆記文字、および類似物などの複雑な文字セットを利用することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】  したがって、レガシ・オペレーティング・システムでユニコード・サポートを提供する装置および方法を有することが有益である。さらに、レガシ・オペレーティング・システムの変更を必要とせず、そのオペレーティング・システム環境で稼動するアプリケーションの変更を必要とせず、複雑なハードウェアを必要としない、ユニコード・サポートを提供する装置および方法を有することが有益である。
【課題を解決するための手段】
【０００６】  本発明は、第１の態様で、キーボードからキーストローク入力を受け取るステップと、そのキーストローク入力を前記キーストローク入力のユニコード表現に変換するステップと、そのキーストローク入力のユニコード表現を一時ストレージ・メモリに保管するステップと、そのキーストローク入力のユニコード表現をその一時ストレージ・メモリからプログラムに貼り付けるステップとを含む、プログラムにテキストを入力する方法を提供する。【０００７】  この方法は、さらに、現在アクティブなプログラムを識別するステップと、その現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップと、その現在アクティブなプログラムの識別およびその現在アクティブなプログラムがユニコード機能を有するかどうかに関する判定に基づいて、オペレーティング・システム環境のプログラム・コンテキスト内で１つまたは複数のフラグをセットするステップとを含むことが好ましい。【０００８】  この方法は、さらに、選択された文字セットを生成するために文字セット選択を受け取るステップであって、ユニコード表現へのキーストローク入力の変換は、キーストローク入力を選択された文字セットのユニコード表現に変換するステップを含む、受け取るステップを含むことが好ましい。【０００９】  この選択された文字セットは、インド文字セットであることが好ましい。【００１０】  この文字セットは、アジア言語文字セットであることが好ましい。【００１１】  このオペレーティング・システム環境は、ユニコードをサポートしないことが好ましい。代替案では、オペレーティング・システム環境は、ユニコードをサポートするが、選択された文字セットをサポートしないことが好ましい。【００１２】  この現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップは、その現在アクティブなプログラムの識別子をユニコード機能を有するプログラムのプログラム識別子のリストと比較するステップと、その現在アクティブなプログラムの識別子がプログラム識別子のリストに存在する場合に、その現在アクティブなプログラムがユニコード機能を有すると判定するステップとを含むことが好ましい。【００１３】  この一時ストレージ・メモリは、クリップボード・メモリであることが好ましい。【００１４】  この一時ストレージ・メモリからプログラムへの前記キーストローク入力を表すユニコードの貼付けは、その一時ストレージ・メモリの前記内容をそのプログラムの現在のカーソル位置に貼り付けるようにそのプログラムに指示するコマンドをそのプログラムに送るステップを含むことが好ましい。【００１５】  この現在アクティブなプログラムの識別子をプログラム識別子のリストと比較するステップおよびその現在アクティブなプログラムがユニコード機能を有すると判定するステップは、オペレーティング・システムに登録されたフォーカス・フック・モジュールによって実行され、プログラム識別子のリストは、そのフォーカス・フック・モジュールにハードコードされていることが好ましい。【００１６】  この現在アクティブなプログラムの識別子をプログラム識別子のリストと比較するステップおよびその現在アクテ��ブなプログラムがユニコード機能を有すると判定するステップは、オペレーティング・システムに登録されたフォーカス・フック・モジュールによって実行され、プログラム識別子のリストは、そのフォーカス・フック・モジュールによってアクセス可能なデータ・ファイルに保管されていることが好ましい。【００１７】  このプログラムは、電子メール・プログラムであることが好ましい。【００１８】  この方法は、現在アクティブなプログラムを識別するステップと、現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップと、現在アクティブなプログラムの識別の結果および現在アクティブなプログラムがユニコード機能を有するかどうかの判定の結果を示すメッセージをオペレーティング・システムに送るステップとをさらに含むことが好ましい。【００１９】  この現在アクティブなプログラムは、そのプログラムがユーザによって選択された時に生成されたアクティブ化イベントに基づいて識別されることが好ましい。【００２０】  ユニコードをサポートしないオペレーティング・システム環境内の現在アクティブなアプリケーションは、キーボード入力のユニコード表現をクリップボード・メモリから現在アクティブなアプリケーションに貼り付けるように指示されることが好ましい。【００２１】  この現在アクティブなアプリケーションは、そのアプリケーションがユーザによって選択された時に生成されるアプリケーション・アクティブ化イベントに基づいて識別されることが好ましい。【００２２】  この方法は、さらに、その現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップを含み、変換ステップ、保管ステップ、および指示ステップは、その現在アクティブなプログラムがユニコード機能を有する場合に限って実行されることが好ましい。【００２３】  この方法は、さらに、テキストを入力するのに使用される文字セットを選択するグラフィカル・ユーザ・インターフェースを提供するステップと、これによって選択された文字セットを生成するために前記グラフィカル・ユーザ・インターフェースを介して文字セット選択を受け取るステップとを含み、ユニコード表現へのキーボード入力の変換は、キーボード入力を選択された文字セットのユニコード表現に変換するステップを含むことが好ましい。【００２４】  この選択された文字セットは、インド文字セットであることが好ましい。【００２５】  この文字セットは、アジア言語文字セットであることが好ましい。【００２６】  この現在アクティブなアプリケーションがユニコード機能性を有するかどうかの前記判定は、その現在アクティブなアプリケーションの識別子をユニコード機能性を有するアプリケーションの識別子のリストと比較するステップと、その現在アクティブなアプリケーションの識別子がその識別子の前記リストに存在する場合に、その現在アクティブなアプリケーションがユニコード機能性を有すると判定するステップとを含むことが好ましい。【００２７】  第２の態様で、本発明は、上に記載の方法を実行する命令を含み、プログラムにテキストを入力するプログラムであって、それらの命令をコンピュータに実行させるプログラムを提供する。【���０２８】  第３の態様で、本発明は、キーボードからキーストローク入力を受け取る手段と、そのキーストローク入力をそのキーストローク入力のユニコード表現に変換する手段と、そのキーストローク入力のユニコード表現を一時ストレージ・メモリに保管する手段と、そのキーストローク入力のユニコード表現をその一時ストレージ・メモリからプログラムに貼り付ける手段とを含む、プログラムにテキストを入力する装置を提供する。【００２９】  したがって、本発明の装置および方法を用いると、フォーカス・フック・モジュール、キーボード・フック・モジュール、およびキーストローク変換モジュールが、レガシ・オペレーティング・システムに登録される。フォーカス・フック・モジュールは、現在アクティブなアプリケーションと、現在アクティブなアプリケーションがユニコード対応であるかどうかとを判定する。キーボード・フック・モジュールは、入力インターフェースからキーボード・イベントを受け取り，これらのキーボード・イベントをキーストローク変換モジュールに送る。キーストローク変換モジュールは、キーボード・イベントをユニコード文字に変換し、このユニコード文字が、キーボード・フック・モジュールに送り返される。【００３０】  キーボード・フック・モジュールは、次に、ユニコード文字を一時ストレージ・メモリ、たとえばクリップボードに保管する。キーボード・フック・モジュールは、次に、コマンドを一時ストレージ・メモリに送って、一時ストレージ・メモリの内容を現在アクティブなアプリケーションに貼り付ける。この形で、オペレーティング・システムがバイパスされ、その結果、オペレーティング・システムが、ユニコード対応アプリケーションと共にユニコードを使用するために入力方式エディタを備える必要がなくなる。【００３１】  本発明の好ましい実施形態を、添付図面を参照して、例としてのみこれから説明する。
【発明を実施するための最良の形態】
【００３２】  上で述べたように、本発明は、レガシ・オペレーティング・システムでユニコード・サポートを提供する装置および方法を提供する。本発明は、オペレーティング・システムが存在するすべてのコンピューティング・デバイスで実施することができる。そのようなコンピューティング・デバイスに、独立型のパーソナル・コンピュータ、携帯情報端末（ＰＤＡ）、サーバ・コンピューティング・デバイス、コンピュータ化された携帯電話機、ラップトップ・コンピュータ、パームトップ・コンピュータ、および類似物が含まれるが、これらに制限はされない。図１および２は、本発明を実施できる通常のコンピューティング・デバイスの背景の図を提供することを意図されたものであって、本発明の装置および方法を実施できる装置のタイプに関する制限を暗示することを意図されたものではない。【００３３】  ここで図面、具体的には図１を参照すると、本発明の好ましい実施形態に従って本発明を実施できるデータ処理システムの絵図が示されている。コンピュータ１００が示されており、これには、システム・ユニット１０２、ビデオ・ディスプレイ端末１０４、キーボード１０６、フロップ・ドライブおよび他のタイプの永久記憶媒体およびリムーバブル記憶媒体を含むストレージ・デバイス１０８、およびマウス１１０が含まれる。たとえば、ジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロホン、および類似物などの追加の入力デバイスを、パーソナル・コンピュータ１００に含めることができる。コンピュータ１００は、米国ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の製品であるＩＢＭ  ｅＳｅｒｖｅｒコンピュータまたはＩｎｔｅｌｌｉＳｔａｔｉｏｎコンピュータなどの適当なコンピュータを使用して実施することができる。【００３４】  図示の表現に、コンピュータが示されているが、本発明の他の実施形態を、ネットワーク・コンピュータなど、他のタイプのデータ処理システムで実施することができる。コンピュータ１００に、コンピュータ１００内で動作するコンピュータ可読媒体に存在するシステム・ソフトウェアによって実施できるグラフィカル・ユーザ・インターフェース（ＧＵＩ）が含まれることも好ましい。【００３５】  図２を参照すると、本発明を実施できるデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のコンピュータ１００など、本発明の処理を実施するコードまたは命令を配置できるコンピュータの例である。データ処理システム２００は、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）ローカル・バス・アーキテクチャを使用している。図示の例ではＰＣＩバスが使用されているが、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）およびＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などの他のバス・アーキテクチャを使用することができる。【００３６】  プロセッサ２０２およびメイン・メモリ２０４が、ＰＣＩブリッジ２０８を介してＰＣＩローカル・バス２０６に接続されている。ＰＣＩブリッジ２０８には、プロセッサ２０２用の統合メモリ・コントローラおよびキャッシュ・メモリも含めることができる。ＰＣＩローカル・バス２０６への追加接続は、直接構成要素相互接続を介してまたはアドイン・ボードを介して行うことができる。図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１０、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）ホスト・バス・アダプタ２１２、および拡張バス・インターフェース２１４が、直接構成要素接続によってＰＣＩローカル・バス２０６に接続されている。対照的に、オーディオ・アダプタ２１６、グラフィックス・アダプタ２１８、およびオーディオ／ビデオ・アダプタ２１９は、拡張スロットに挿入されたアドイン・ボードによってＰＣＩローカル・バス２０６に接続されている。拡張バス・インターフェース２１４は、キーボードおよびマウス・アダプタ２２０、モデム２２２、および追加メモリ２２４に接続を提供する。ＳＣＳＩホスト・バス・アダプタ２１２は、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭドライブ２３０に接続を提供する。通常のＰＣＩローカル・バス実施形態は、３つまたは４つのＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。【００３７】  オペレーティング・システムが、プロセッサ２０２で稼動し、図２のデータ処理システム２００内のさまざまな構成要素の調整およびその制御の提供に使用される。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社から入手できるＷｉｎｄｏｗｓ（Ｒ）ＸＰなどの市販オペレーティング・システムとすることができる。Ｊａｖａ（Ｒ）などのオブジェクト指向プログラミング・システムが、オペレーティング・システムとあいまって稼動し、データ処理システム２００で実行されるＪａｖａ（Ｒ）プログラムまたはＪａｖａ（Ｒ）アプリケーションからオペレーティング・システムへの呼出を提供することができる。「Ｊａｖａ（Ｒ）」は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ社の商標である。オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムの命令は、ハード・ディスク・ドライブ２２６などのストレージ・デバイスに置かれ、プロセッサ２０２による実行のためにメイン・メモリ２０４にロードすることができる。【００３８】  当業者は、図２のハードウェアを、実施形態に応じて変更できることを諒解するであろう。フラッシュ読取専用メモリ（ＲＯＭ）、同等の不揮発性メモリ、または光学ディスク・ドライブおよび類似物などの他の内部ハードウェアまたは周辺デバイスを、図２に示されたハードウェアに加えてまたはその代わりに使用することができる。また、本発明の処理を、マルチプロセッサ・データ処理システムに適用することができる。【００３９】  たとえば、任意選択としてネットワーク・コンピュータとして構成される場合に、データ処理システム２００に、ＳＣＳＩホスト・バス・アダプタ２１２、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭドライブ２３０を含めないことができる。その場合に、正しくはクライアント・コンピ��ータと呼ばれるコンピュータに、ＬＡＮアダプタ２１０、モデム２２２、または類似物など、あるタイプのネットワーク通信インターフェースが含まれる。もう１つの例として、データ処理システム２００は、データ処理システム２００にあるタイプのネットワーク通信インターフェースが含まれるか否かにかかわりなく、あるタイプのネットワーク通信インターフェースに頼らずにブート可能になるように構成された独立型システムとすることができる。もう１つの例として、データ処理システム２００を、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方の保管のための不揮発性メモリを提供するためにＲＯＭまたはフラッシュＲＯＭあるいはその両方を用いて構成された携帯情報端末（ＰＤＡ）とすることができる。【００４０】  図２に示された例および上で説明した例は、アーキテクチャ的制限を暗示することを意図されたものではない。たとえば、データ処理システム２００は、ＰＤＡの形をとることの他に、ノートブック・コンピュータまたはハンド・ヘルド・コンピュータとすることもできる。データ処理システム２００を、キオスクまたはウェブ・アプライアンスとすることもできる。【００４１】  本発明の処理は、コンピュータ実施された命令を使用してプロセッサ２０２によって実行され、このコンピュータ実施された命令は、たとえばメイン・メモリ２０４、メモリ２２４、または１つもしくは複数の周辺デバイス２２６〜２３０などのメモリに置くことができる。【００４２】  図１および図２に示されたコンピューティング・デバイスのオペレーティング・システムは、本発明の好ましい実施形態では、ユニコード機能が存在しないレガシ・オペレーティング・システムである。そのようなレガシ・オペレーティング・システムの例に、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）  ９５（商標）およびＷｉｎｄｏｗｓ（Ｒ）  ９８（商標）が含まれる。他の実施形態で、コンピューティング・デバイスのオペレーティング・システムは、選択された言語文字セットだけがオペレーティング・システムによってサポートされるという点で制限されたユニコード機能を有するオペレーティング・システムであり、本発明を使用して、そのオペレーティング・システムによって特にサポートされていない他の言語文字セットに関する追加ユニコード・サポートを提供することができる。制限されたユニコード・サポートが提供されるそのようなオペレーティング・システムの例に、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）２０００（商標）およびＷｉｎｄｏｗｓ（Ｒ）ＸＰ（商標）が含まれる。【００４３】  本発明を用いると、レガシ・オペレーティング・システムが存在するか制限されたユニコード・サポートを有するオペレーティング・システムが存在するコンピューティング・デバイスのユーザが、オペレーティング・システムの制限にもかかわらずユニコード対応アプリケーションを用いてユニコードを利用することができる。すなわち、本発明は、レガシ・オペレーティング・システムおよび制限付きサポート・オペレーティング・システムに入力方法エディタを提供し、ユーザが、オペレーティング・システムがその文字セットをサポートするか���かに関わりなく、複数のユニコード・ベースの文字セットから、使用される言語文字セットのタイプを選択できるようになる。【００４４】  本発明の装置および方法を用いると、ユーザは、図３に示されたものなどの構成インターフェースを呼び出して、オペレーティング・システム環境内でアプリケーションと共に使用する文字セットを選択することができる。本発明は、オペレーティング・システムの制限にもかかわらずユニコード対応アプリケーションにキーストロークのユニコード表現を貼り付けるように一緒に動作するキーボード・フック・モジュール、フォーカス・フック・モジュール、キーストローク変換モジュール、および一時ストレージ・メモリ（たとえば、クリップボード）を使用することによって、オペレーティング・システムの「バイパス」を提供する。【００４５】  図４を参照すると、図からわかるように、入力方式エディタ４００が、オペレーティング・システム４３０など、制限されたユニコード・サポートのレガシ・オペレーティング・システムのために設けられている。入力方式エディタ４００に、フォーカス・フック・モジュール４２０、キーボード・フック・モジュール４４０、キーストローク変換モジュール４６０、および入力インターフェース４５０が含まれる。【００４６】  本発明では、キーボード・フック・モジュール４４０およびフォーカス・フック・モジュール４２０が、コンピューティング・デバイスのオペレーティング・システム４３０に登録される。フォーカス・フック・モジュール４２０は、アプリケーション・アクティブ化イベントについて継続的に監視する。ユーザによるアプリケーションの選択、たとえば、アプリケーションの最初の稼動、オペレーティング・システム環境内でアプリケーション・ウィンドウをアクティブにするための切替、または類似物のいずれかによるアプリケーションのアクティブ化がある時に、フォーカス・フック・モジュール４２０が、アプリケーション・アクティブ化イベントを受け取る。図４には、アプリケーション４１０がオペレーティング・システム環境の「フォーカス」であることを示すために、アプリケーション・アクティブ化イベントがアプリケーション４１０から受け取られることが示されているが、実際には、フォーカス・フック・モジュール４２０が、オペレーティング・システム４３０からアプリケーション・アクティブ化イベントを受け取る。【００４７】  アプリケーション・アクティブ化イベントに応答して、フォーカス・フック・モジュール４２０が、現在アクティブなアプリケーションと、そのアプリケーションがユニコード文字セットを使用できるかどうかを判定する。現在アクティブなアプリケーションの判定は、アプリケーション・アクティブ化イベントに含まれる情報に基づいて行うことができる。たとえば、アプリケーション・アクティブ化イベントのソースであるアプリケーションの名前、アプリケーション・クラス、他のタイプのアプリケーション識別子、または類似物が、アプリケーション・アクティブ化イベントに含まれる場合があり、これを使用して、現在アクティブなアプリケーションを識別することができる。【００４８】  フォーカス・フック・モジュール４２０は、アプリケーションの名前、クラス名、または他のタイプのアプリケーション識別子を、フォーカス・フック・モジュール４２０によって維持されるかフォーカス・フック・モジュール４２０によってアクセス可能なユニコード対応アプリケーション識別子のリストと比較することによって、アプリケーションがユニコード機能を有するかどうかを判定することができる。たとえば、ユニコード対応アプリケーション識別子のリストは、コンピューティング・システム内で保管されるファイルで維持することができ、そのファイルに、フォーカス・フック・モジュール４２０によってアクセスして、現在アクティブなアプリケーションがユニコード対応であるかどうかを判定することができる。代替案では、ユニコード対応アプリケーション識別子のリストを、フォーカス・フック・モジュール４２０にハードコードすることができる。【００４９】  これらの判定に基づいて、フォーカス・フック・モジュール４２０は、アプリケーションが現在アクティブであることと、アプリケーションがユニコード対応であることを示すフラグを、オペレーティング・システム４３０のアプリケーション・コンテキスト内でセットする。これらのフラグは、その後、キーボード・フック・モジュール４４０によって、キーボード・イベントをキーストローク変換モジュール４６０に送るかどうかと、ユニコード表現を貼り付けるためにどのアプリケーションに送るかを判定するのに使用される。【００５０】  キーボード・フック・モジュール４４０は、コンピューティング・デバイスに取り付けられたキーボードを介するなど、ユーザがキーストロークを入力することに応答して、ＩＭＥ  ４００の入力インターフェース４５０からキーボード・イベントを受け取る。キーボード・フック・モジュール４４０は、現在アクティブ・アプリケーション・フラグおよび現在アクティブなアプリケーションのユニコード機能フラグを読み取って、アプリケーション４１０がユニコード入力を受け取ることができるかどうかを判定する。できない場合には、動作が終了し、キーボード・イベントは、ＩＭＥ  ４００が存在しないかのように普通の形で処理される。アプリケーション４１０がユニコード入力を受け取ることができる場合には、キーボード・フック・モジュール４４０は、キーボード・イベントをキーストローク変換モジュール４６０に転送する。【００５１】  さらに、入力インターフェース４５０は、図３に示されたものなどの構成グラフィカル・ユーザ・インターフェースを提供して、ユーザがアプリケーションと共に利用することを望む文字セットをユーザが選択できるようにすることができる。提供される文字セットに、アプリケーション入力フィールドでこれらの文字セットを提示するのにユニコードの使用を必要とする文字セット、たとえば、中国文字セット、日本文字セット、インド文字セット、および類似物を含めることができる。【００５２】  キーストローク変換モジュール４６０は、受け取ったキーボード・イベントをとり、これらのイベントに関連するキーストロークを、そのキーストロークのユニコード表現に変換する。この変換は、入力インターフェース４５０を介してユーザによって選択された特定の文字セットに基づいて実行することができる。したがって、キーストローク変換モジュール４６０は、ユニコード表現で識別される複雑な文字へのキーストロークの変換に関して、既存の入力方式エディタで既知の動作に類似する動作を実行する。この形で、ユーザによって行われたキーストロークを、アジア文字セット、インド文字セット、または他の複雑な文字セットに変換することができる。本明細書で使用される用語、アジア文字セットは、日本、中国、ベトナム、ラオス、および類似物を含むアジア諸国で使用される言語および筆記文字を指す。本明細書で使用される用語、インド文字セットは、インド亜大陸で使用される言語および筆記文字を指す。【００５３】  ユーザによって入力されたキーストロークのユニコード表現が、次に、キーボード・フック・モジュール４４０に返される。キーボード・フック・モジュール４４０は、そのユニコード表現を一時ストレージ・メモリ４７０に保管する。この一時ストレージ・メモリ４７０は、好ましい実施形態ではクリップボードである。【００５４】  クリップボードは、「コピーおよび貼付け」動作と「切取りおよび貼付け」動作を使用することによってあるアプリケーションから別のアプリケーションにコピーまたは移動されるデータの一時保持区域として使用される、メモリの予約済みセクションである。何かがクリップボードに転送されるたびに、クリップボードの以前の内容が削除される。クリップボードは、舞台裏の機能として働き、別のアプリケーションへの貼付けのためにその内容を保持する。【００５５】  ユニコード表現を一時ストレージ・メモリ４７０に保管した後に、キーボード・フック・モジュール４４０は、フォーカスがあるアプリケーションにコマンドを送って、現在アクティブ・アプリケーション・フラグによって識別される現在アクティブなアプリケーション４１０に一時ストレージ・メモリ４７０の内容を貼り付ける。次に、一時ストレージ・メモリ４７０の内容が，アプリケーション４１０内で、アプリケーション４１０の入力フィールドのカーソルの位置に貼り付けられる。この形で、オペレーティング・システム４３０がユニコードをサポートしないか、ユニコードの制限されたサポートを有するのいずれかであり、ユーザによって選択された特定の文字セットがオペレーティング・システム４３０によって特にサポートされない場合であっても、キーボード・フック・モジュール４４０によって受け取られたキーボード・イベントに応答してキーストローク変換モジュール４６０によって生成された一時ストレージ・メモリ４７０に保管されたユニコード表現が、アプリケーション４１０に入力される。図５は、電子メール・アプリケーションに適用された時の本発明の主要な構成要素の相互作用を示すメッセージ・フロー図である。本発明は、ユーザからのテキスト入力がアプリケーションの１つまたは複数の入力フィールドで受け取られるすべてのアプリケーションと共に使用することができる。例として、図５で、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ，Ｉｎｃ．社のＬｏｔｕｓ  Ｎｏｔｅｓ（商標）またはＭｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ（商標）などの電子メール・アプリケーション���参照し、クリップボードを使用して、電子メール・アプリケーションに貼り付けられるテキスト入力のユニコード表現を一時的に保管する。【００５６】  図５からわかるように、オペレーティング・システム５１０は、現在アクティブなアプリケーションとしてのアプリケーションのユーザ選択を受け取る。この選択は、たとえば、デスクトップでアプリケーションを表すアイコンの「ダブル・クリック」に応答するものなどのアプリケーションのロードおよび稼動、ツール・バーまたはデスクトップ内で開かれたウィンドウからの既にロードされ稼動しているアプリケーションの選択、または類似物とすることができる。図示の例では、選択されたアプリケーションが、ユーザの選択に応答してアクティブ化される電子メール・アプリケーション５３０である。【００５７】  アプリケーションのアクティブ化に応答して、フォーカス・フック・モジュール５４０が、アクティブ化され、フォーカス・フック・モジュール５４０が、現在アクティブなアプリケーションとして電子メール・アプリケーション５３０を識別し、電子メール・アプリケーション５３０がユニコードを使用できるかどうかを判定する。電子メール・アプリケーション５３０がユニコードを使用できるとフォーカス・フック・モジュール５４０が判定した場合に、フォーカス・フック・モジュール５４０は、キーボード・フック・モジュール５５０にメッセージを送り、これによって、キーボード・イベントをリスンするためにキーボード・フック・モジュール５５０をアクティブ化する。フォーカス・フック・モジュール５４０は、次に、オペレーティング・システム５１０のアプリケーション・コンテキスト内でアクティブ・アプリケーション・フラグおよびユニコード機能フラグをセットする。【００５８】  少し後に、または上の処理の前に、ユーザが、電子メール・アプリケーション５３０と共に使用される文字セットを選択することができる。この文字セットは、たとえば本発明のＩＭＥを介してユニコードを使用することによってのみ入手可能な複雑な文字セットとすることができる。ＩＭＥインターフェース５２０が、アクティブ化され、コンピューティング・デバイスに関連するキーボードからユーザ・キーストロークを受け取る。【００５９】  受け取られたキーストロークは、キーボード・イベントの生成に使用され、このキーボード・イベントが、キーボード・フック・モジュール５５０に転送される。電子メール・アプリケーション５３０は、ユニコードをサポートすると判定されている（たとえば、フォーカス・フック・モジュール５４０によってセットされたフラグに基づいて）ので、キーボード・フック・モジュール５５０は、このキーボード・イベントをＩＭＥエンジン５６０に送る。ＩＭＥエンジン５６０は、キーボード・イベントをユニコード表現に変換し、このユニコード表現をキーボード・フック・モジュール５５０に送り返す。【００６０】  キーボード・フック・モジュール５５０は、ユニコードを電子メール・アプリケーション５３０の入力フィールドに貼り付けられるようにするために、このユニコード表現を一時的にクリップボード５７０に保管する。その後、キーボード・フック５５０は、電子メール・アプリケーション５３０に貼付けコマンドを送る。クリップボード５７０は、クリップボード５７０に保管されたユニコード表現を、電子メール・アプリケーション５３０のアプリケーション・インターフェースすなわち、カーソルが現在ある入力フィールドに貼り付ける。この形で、アプリケーションは、オペレーティング・システムがユニコードをサポートしない場合であってもユニコード入力を受け取り、そのユニコードをディスプレイ・スクリーン上のアプリケーション・ウィンドウ内の適当な文字表現に変換することができる。したがって、ユーザは、ユニコードをサポートしないレガシ・オペレーティング・システムを有するコンピューティング・デバイスに結合された標準キーボードで電子メール・メッセージを入力でき、ユーザによって選択された複雑な文字セットでディスプレイ・スクリーン上で表された電子メール・メッセージを見ることができる。【００６１】  図６は、本発明の例示的動作の概要を示す流れ図である。図６からわかるように、この動作は、フォーカス選択を受け取ること（ステップ６１０）によって開始される。用語「フォーカス」は、ユーザが現在インターフェースしているアプリケーションとしての現在アクティブなアプリケーションの選択を示すことを意味する。【００６２】  次に、フォーカス・フック・モジュールをアクティブ化し（ステップ６２０）、アプリケーションがユニコードをサポートするかどうかに関する判定を行う（ステップ６３０）。そうでない場合には、この動作は終了する。そうである場合には、キーボード・フック・モジュールをアクティブ化し（ステップ６４０）、このキーボード・フック・モジュールが、キーストローク入力を受け取り、ユニコード表現への変換のためにキーボード・イベントを生成する。【００６３】  受け取られたキーストロークに応答してキーボード・フック・モジュールによって生成されたキーボード・イベントを、ＩＭＥエンジンに送る（ステップ６５０）。ＩＭＥエンジンは、これらのキーボード・イベントをユニコード文字すなわちキーボード・イベントのユニコード表現に変換する（ステップ６６０）。ユニコード文字をキーボード・フック・モジュールに送り返し（ステップ６７０）、キーボード・フック・モジュールは、これをクリップボードなどの一時ストレージ・メモリに保管する（ステップ６８０）。次に、キーボード・フック・モジュールは、アプリケーションに貼付けコマンドを送り、そこに保管されたユニコード文字を、アプリケーションの入力フィールドのカーソル位置に貼り付けさせ（ステップ６９０）、この動作が終了する。【００６４】  したがって、本発明を用いると、そのオペレーティング・システムがユニコードをサポートしないコンピューティング・デバイスでユニコード入力を受け取ることができる。この形で、ユニコード対応アプリケーションを、レガシ・オペレーティング・システムと共に、完全なユニコード機能と共に使用することができる。本発明を用いると、オペレーティング・システムがユニコードをサポートしないか、ユーザの特定の言語の複雑な文字セットをサポートできない場合であっても、ユーザが、自分自身の言語の複雑な文字セットでユニコード対���アプリケーションとインターフェースすることができる。【００６５】  本発明を、完全に機能するデータ処理システムに関して説明したが、本発明の処理を、命令のコンピュータ可読媒体の形およびさまざまな形で配布することができることと、本発明が、配布の実行に実際に使用される信号担持媒体の特定のタイプに関わりなく同等に適用されることを当業者が諒解するであろうことに留意することが重要である。コンピュータ可読媒体の例に、フロッピ・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型媒体と、ディジタル通信リンク、アナログ通信リンク、たとえばラジオ周波数伝送および光波伝送などの伝送形式を使用する有線通信リンクまたは無線通信リンクなどの伝送型媒体が含まれる。コンピュータ可読媒体は、特定のデータ処理システムでの実際の使用のために復号されるコード化されたフォーマットの形をとることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明を実施できるコンピューティング・デバイスを示す例示的な図である。
【図２】本発明を実施できるコンピューティング・デバイスの主な動作構成要素を示す例示的なブロック図である。
【図３】本発明の例示的実施形態による、入力方式エディタの構成グラフィカル・ユーザ・インターフェースを示す例示的な図である。
【図４】本発明による、レガシ・オペレーティング・システムの入力方式エディタを示す例示的なブロック図である。
【図５】電子メール・アプリケーションに適用された時の本発明の主要な構成要素の相互作用を示すメッセージ・フロー図である。
【図６】本発明の例示的動作の概要を示す流れ図である。
【符号の説明】
【００６７】１００  コンピュータ
１０２  システム・ユニット
１０４  ビデオ・ディスプレイ端末
１０６  キーボード
１０８  ストレージ・デバイス
１１０  マウス
２００  データ処理システム
２０２  プロセッサ
２０４  メイン・メモリ
２０６  ＰＣＩローカル・バス
２０８  ＰＣＩブリッジ
２１０  ＬＡＮアダプタ
２１２  ＳＣＳＩホスト・バス・アダプタ
２１４  拡張バス・インターフェース
２１６  オーディオ・アダプタ
２１８  グラフィックス・アダプタ
２１９  オーディオ／ビデオ・アダプタ
２２０  キーボードおよびマウス・アダプタ
２２２  モデム
２２４  追加メモリ
２２６  ハード・ディスク・ドライブ
２２８  テープ・ドライブ
２３０  ＣＤ−ＲＯＭドライブ
４００  入力方式エディタ
４１０  アプリケーション
４２０  フォーカス・フック・モジュール
４３０  オペレーティング・システム
４４０  キーボード・フック・モジュール
４５０  入力インターフェース
４６０  キーストローク変換モジュール
４７０  一時ストレージ・メモリ
５１０  オペレーティング・システム
５２０  ＩＭＥインターフェース
５３０  電子メール・アプリケーション
５４０  フォーカス・フック・モジュール
５５０  キーボード・フック・モジュール
５６０  ＩＭＥエンジン
５７０  クリップボード
【図１】
2007538295.tif 000003
【図２】
2007538295.tif 000004
【図３】
2007538295.tif 000005
【図４】
2007538295.tif 000006
【図５】
2007538295.tif 000007
【図６】
2007538295.tif 000008
【手続補正書】
【提出日】平成17年1月10日(2005.1.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レガシ・オペレーティング・システムでユニコード入力を可能にする装置および方法を対象とする。具体的に言うと、本発明は、ユニコード・サポートまたは特定の選択された筆記文字に関するユニコード・サポートを有しないオペレーティング・システムでアプリケーションが実行されている場合であってもユニコードをサポートするアプリケーションと共に使用することができる、キーボード・ストロークをユニコード表現に変換する入力方式エディタ（ｉｎｐｕｔ  ｍｅｔｈｏｄ  ｅｄｉｔｏｒ）を介して変換されたキーストロークを受け取る機構を対象とする。
【背景技術】
【０００２】
Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社のＷｉｎｄｏｗｓ（Ｒ）  ２０００（商標）およびＷｉｎｄｏｗｓ（Ｒ）  ＸＰ（商標）などの現代のオペレーティング・システムは、入力方式エディタ（ＩＭＥ）を介するユニコード入力を完全にサポートする。ユニコードは、１文字ごとに１バイトではなく２バイトを使用する、ＡＳＣＩＩ文字セットのスーパーセットである。その結果、ユニコード文字セットは、ＡＳＣＩＩの２５６文字ではなく、６５５３６文字の組合せを扱うことができる。これによって、ＡＳＣＩＩ文字セットでは表現できない世界中の言語の多くを、ユニコードで表すことが可能になる。
【０００３】
入力方式エディタ（ＩＭＥ）は、コンピュータ・ユーザが、日本語文字などの複雑な文字および記号を標準キーボードを使用して入力できるようにするプログラムである。そのようなＩＭＥの例に、ＩＢＭ  Ｉｎｄｉｃ  ＩＭＥ、Ｍｉｃｒｏｓｏｆｔ  Ｇｌｏｂａｌ  ＩＭＥ  ５．０２、およびＧｌｏｂａｌ  ＩＭＥ  ｆｏｒ  Ｏｆｆｉｃｅ  ＸＰが含まれる。ＩＭＥは、キーボード・イベントをとり、これを、オペレーティング・システムまたはオペレーティング・システム環境内で稼動するアプリケーションあるいはその両方と共に使用できるユニコード表現に変換する。
【０００４】
Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）９５（商標）などのレガシ・オペレーティング・システムでは、そのようなＩＭＥフレームワークが存在しないか、文字セットが非常に少数の特定の言語に制限されている。したがって、たいてい、レガシ・オペレーティング・システムは、ユニコード文字セットをサポートできないので、インド筆記文字（たとえば、デバナーガリ文字）、日本筆記文字、および類似物などの複雑な文字セットを利用することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、レガシ・オペレーティング・システムでユニコード・サポートを提供する装置および方法を有することが有益である。さらに、レガシ・オペレーティング・システムの変更を必要とせず、そのオペレーティング・システム環境で稼動するアプリケーションの変更を必要とせず、複雑なハードウェアを必要としない、ユニコード・サポートを提供する装置および方法を有することが有益である。
【課題を解決するための手段】
【０００６】
本発明は、第１の態様で、キーボード入力を受け取るステップと、そのキーボード入力を前記キーボード入力のユニコード表現に変換するステップと、そのキーボード入力のユニコード表現をクリップボード・メモリに保管するステップと、そのキーボード入力の前記ユニコード表現をそのクリップボード・メモリから現在アクティブなアプリケーションに貼り付けるようにその現在アクティブなアプリケーションに指示するステップとを含む、ユニコードをサポートしないオペレーティング・システム環境でその現在アクティブなアプリケーションにテキストを入力する方法を提供する。
【０００７】
この現在アクティブなアプリケーションは、そのアプリケーションがユーザによって選択された時に生成されたアプリケーション・アクティブ化イベントに基づいて識別されることが好ましい。
【０００８】
この方法は、その現在アクティブなプログラムがユニコード機能を有するかどうかを判定するステップをさらに含み、変換ステップ、保管ステップ、および指示ステップは、その現在アクティブなプログラムがユニコード機能を有する場合に限って実行されることが好ましい。
【０００９】
この方法は、さらに、テキストを入力するのに使用される文字セットを選択するグラフィカル・ユーザ・インターフェースを提供するステップと、これによって選択された文字セットを生成するために前記グラフィカル・ユーザ・インターフェースを介して文字セット選択を受け取るステップを含み、ユニコード表現へのキーボード入力の変換は、キーボード入力を選択された文字セットのユニコード表現に変換するステップとをさらに含むことが好ましい。
【００１０】
この現在アクティブなアプリケーションがユニコード機能を有するかどうかの判定は、その現在アクティブなアプリケーションの識別子をユニコード機能を有するアプリケーションの識別子のリストと比較するステップと、その現在アクティブなアプリケーションの識別子がその識別子の前記リストに存在する場合に、その現在アクティブなアプリケーションがユニコード機能を有すると判定するステップとを含むことが好ましい。
【００１１】
第２の態様で、本発明は、したがって、データ処理システムで実行された時に、上に記載の方法を実行するようにそのデータ処理システムに指示する、コンピュータ可読記憶媒体に保管されたコンピュータ・プログラム・コードを含むコンピュータ・プログラムを提供する。
【００１２】
第３の態様で、本発明は、したがって、キーボード入力を受け取る手段と、そのキーボード入力をそのキーボード入力のユニコード表現に変換する手段と、そのキーボード入力のユニコード表現をクリップボード・メモリに保管する手段と、そのキーボード入力のユニコード表現をそのクリップボード・メモリから現在アクティブなアプリケーションに貼り付けるようにその現在アクティブなアプリケーションに指示する手段とを含む、プログラムにテキストを入力する装置を提供する。
【００１３】
したがって、本発明の装置および方法を用いると、フォーカス・フック・モジュール、キーボード・フック・モジュール、およびキーストローク変換モジュールが、レガシ・オペレーティング・システムに登録される。フォーカス・フック・モジュールは、現在アクティブなアプリケーションと、現在アクティブなアプリケーションがユニコード対応であるかどうかとを判定する。キーボード・フック・モジュールは、入力インターフェースからキーボード・イベントを受け取り、これらのキーボード・イベントをキーストローク変換モジュールに送る。キーストローク変換モジュールは、キーボード・イベントをユニコード文字に変換し、このユニコード文字が、キーボード・フック・モジュールに送り返される。
【００１４】
キーボード・フック・モジュールは、次に、ユニコード文字を一時ストレージ・メモリ、たとえばクリップボードに保管する。キーボード・フック・モジュールは、次に、コマンドを一時ストレージ・メモリに送って、一時ストレージ・メモリの内容を現在アクティブなアプリケーションに貼り付ける。この形で、オペレーティング・システムがバイパスされ、その結果、オペレーティング・システムが、ユニコード対応アプリケーションと共にユニコードを使用するために入力方式エディタを備える必要がなくなる。
【００１５】
本発明の好ましい実施形態を、添付図面を参照して、例としてのみこれから説明する。
【発明を実施するための最良の形態】
【００１６】
上で述べたように、本発明は、レガシ・オペレーティング・システムでユニコード・サポートを提供する装置および方法を提供する。本発明は、オペレーティング・システムが存在するすべてのコンピューティング・デバイスで実施することができる。そのようなコンピューティング・デバイスに、独立型のパーソナル・コンピュータ、携帯情報端末（ＰＤＡ）、サーバ・コンピューティング・デバイス、コンピュータ化された携帯電話機、ラップトップ・コンピュータ、パームトップ・コンピュータ、および類似物が含まれるが、これらに制限はされない。図１および２は、本発明を実施できる通常のコンピューティング・デバイスの背景の図を提供することを意図されたものであって、本発明の装置および方法を実施できる装置のタイプに関する制限を暗示することを意図されたものではない。
【００１７】
ここで図面、具体的には図１を参照すると、本発明の好ましい実施形態に従って本発明を実施できるデータ処理システムの絵図が示されている。コンピュータ１００が示されており、これには、システム・ユニット１０２、ビデオ・ディスプレイ端末１０４、キーボード１０６、フロップ・ドライブおよび他のタイプの永久記憶媒体およびリムーバブル記憶媒体を含むストレージ・デバイス１０８、およびマウス１１０が含まれる。たとえば、ジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロホン、および類似物などの追加の入力デバイスを、パーソナル・コンピュータ１００に含めることができる。コンピュータ１００は、米国ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ社の製品であるＩＢＭ  ｅＳｅｒｖｅｒコンピュータまたはＩｎｔｅｌｌｉＳｔａｔｉｏｎコンピュータなどの適当なコンピュータを使用して実施することができる。
【００１８】
図示の表現に、コンピュータが示されているが、本発明の他の実施形態を、ネットワーク・コンピュータなど、他のタイプのデータ処理システムで実施することができる。コンピュータ１００に、コンピュータ１００内で動作するコンピュータ可読媒体に存在するシステム・ソフトウェアによって実施できるグラフィカル・ユーザ・インターフェース（ＧＵＩ）が含まれることも好ましい。
【００１９】
図２を参照すると、本発明を実施できるデータ処理システムのブロック図が示されている。データ処理システム２００は、図１のコンピュータ１００など、本発明の処理を実施するコードまたは命令を配置できるコンピュータの例である。データ処理システム２００は、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）ローカル・バス・アーキテクチャを使用している。図示の例ではＰＣＩバスが使用されているが、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）およびＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などの他のバス・アーキテクチャを使用することができる。
【００２０】
プロセッサ２０２およびメイン・メモリ２０４が、ＰＣＩブリッジ２０８を介してＰＣＩローカル・バス２０６に接続されている。ＰＣＩブリッジ２０８には、プロセッサ２０２用の統合メモリ・コントローラおよびキャッシュ・メモリも含めることができる。ＰＣＩローカル・バス２０６への追加接続は、直接構成要素相互接続を介してまたはアドイン・ボードを介して行うことができる。図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１０、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）ホスト・バス・アダプタ２１２、および拡張バス・インターフェース２１４が、直接構成要素接続によってＰＣＩローカル・バス２０６に接続されている。対照的に、オーディオ・アダプタ２１６、グラフィックス・アダプタ２１８、およびオーディオ／ビデオ・アダプタ２１９は、拡張スロットに挿入されたアドイン・ボードによってＰＣＩローカル・バス２０６に接続されている。拡張バス・インターフェース２１４は、キーボードおよびマウス・アダプタ２２０、モデム２２２、および追加メモリ２２４に接続を提供する。ＳＣＳＩホスト・バス・アダプタ２１２は、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭドライブ２３０に接続を提供する。通常のＰＣＩローカル・バス実施形態は、３つまたは４つのＰＣＩ拡張スロットまたはアドイン・コネクタをサポートする。
【００２１】
オペレーティング・システムが、プロセッサ２０２で稼動し、図２のデータ処理システム２００内のさまざまな構成要素の調整およびその制御の提供に使用される。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社から入手できるＷｉｎｄｏｗｓ（Ｒ）ＸＰなどの市販オペレーティング・システムとすることができる。Ｊａｖａ（Ｒ）などのオブジェクト指向プログラミング・システムが、オペレーティング・システムとあいまって稼動し、データ処理システム２００で実行されるＪａｖａ（Ｒ）プログラムまたはＪａｖａ（Ｒ）アプリケーションからオペレーティング・システムへの呼出を提供することができる。「Ｊａｖａ（Ｒ）」は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ社の商標である。オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムの命令は、ハード・ディスク・ドライブ２２６などのストレージ・デバイスに置かれ、プロセッサ２０２による実行のためにメイン・メモリ２０４にロードすることができる。
【００２２】
当業者は、図２のハードウェアを、実施形態に応じて変更できることを諒解するであろう。フラッシュ読取専用メモリ（ＲＯＭ）、同等の不揮発性メモリ、または光学ディスク・ドライブおよび類似物などの他の内部ハードウェアまたは周辺デバイスを、図２に示されたハードウェアに加えてまたはその代わりに使用することができる。また、本発明の処理を、マルチプロセッサ・データ処理システムに適用することができる。
【００２３】
たとえば、任意選択としてネットワーク・コンピュータとして構成される場合に、データ処理システム２００に、ＳＣＳＩホスト・バス・アダプタ２１２、ハード・ディスク・ドライブ２２６、テープ・ドライブ２２８、およびＣＤ−ＲＯＭドライブ２３０を含めないことができる。その場合に、正しくはクライアント・コンピュータと呼ばれるコンピュータに、ＬＡＮアダプタ２１０、モデム２２２、または類似物など、あるタイプのネットワーク通信インターフェースが含まれる。もう１つの例として、データ処理システム２００は、データ処理システム２００にあるタイプのネットワーク通信インターフェースが含まれるか否かにかかわりなく、あるタイプのネットワーク通信インターフェースに頼らずにブート可能になるように構成された独立型システムとすることができる。もう１つの例として、データ処理システム２００を、オペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方の保管のための不揮発性メモリを提供するためにＲＯＭまたはフラッシュＲＯＭあるいはその両方を用いて構成された携帯情報端末（ＰＤＡ）とすることができる。
【００２４】
図２に示された例および上で説明した例は、アーキテクチャ的制限を暗示することを意図されたものではない。たとえば、データ処理システム２００は、ＰＤＡの形をとることの他に、ノートブック・コンピュータまたはハンド・ヘルド・コンピュータとすることもできる。データ処理システム２００を、キオスクまたはウェブ・アプライアンスとすることもできる。
【００２５】
本発明の処理は、コンピュータ実施された命令を使用してプロセッサ２０２によって実行され、このコンピュータ実施された命令は、たとえばメイン・メモリ２０４、メモリ２２４、または１つもしくは複数の周辺デバイス２２６〜２３０などのメモリに置くことができる。
【００２６】
図１および図２に示されたコンピューティング・デバイスのオペレーティング・システムは、本発明の好ましい実施形態では、ユニコード機能が存在しないレガシ・オペレーティング・システムである。そのようなレガシ・オペレーティング・システムの例に、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）  ９５（商標）およびＷｉｎｄｏｗｓ（Ｒ）  ９８（商標）が含まれる。他の実施形態で、コンピューティング・デバイスのオペレーティング・システムは、選択された言語文字セットだけがオペレーティング・システムによってサポートされるという点で制限されたユニコード機能を有するオペレーティング・システムであり、本発明を使用して、そのオペレーティング・システムによって特にサポートされていない他の言語文字セットに関する追加ユニコード・サポートを提供することができる。制限されたユニコード・サポートが提供されるそのようなオペレーティング・システムの例に、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）２０００（商標）およびＷｉｎｄｏｗｓ（Ｒ）ＸＰ（商標）が含まれる。
【００２７】
本発明を用いると、レガシ・オペレーティング・システムが存在するか制限されたユニコード・サポートを有するオペレーティング・システムが存在するコンピューティング・デバイスのユーザが、オペレーティング・システムの制限にもかかわらずユニコード対応アプリケーションを用いてユニコードを利用することができる。すなわち、本発明は、レガシ・オペレーティング・システムおよび制限付きサポート・オペレーティング・システムに入力方法エディタを提供し、ユーザが、オペレーティング・システムがその文字セットをサポートするか否かに関わりなく、複数のユニコード・ベースの文字セットから、使用される言語文字セットのタイプを選択できるようになる。
【００２８】
本発明の装置および方法を用いると、ユーザは、図３に示されたものなどの構成インターフェースを呼び出して、オペレーティング・システム環境内でアプリケーションと共に使用する文字セットを選択することができる。本発明は、オペレーティング・システムの制限にもかかわらずユニコード対応アプリケーションにキーストロークのユニコード表現を貼り付けるように一緒に動作するキーボード・フック・モジュール、フォーカス・フック・モジュール、キーストローク変換モジュール、および一時ストレージ・メモリ（たとえば、クリップボード）を使用することによって、オペレーティング・システムの「バイパス」を提供する。
【００２９】
図４を参照すると、図からわかるように、入力方式エディタ４００が、オペレーティング・システム４３０など、制限されたユニコード・サポートのレガシ・オペレーティング・システムのために設けられている。入力方式エディタ４００に、フォーカス・フック・モジュール４２０、キーボード・フック・モジュール４４０、キーストローク変換モジュール４６０、および入力インターフェース４５０が含まれる。
【００３０】
本発明では、キーボード・フック・モジュール４４０およびフォーカス・フック・モジュール４２０が、コンピューティング・デバイスのオペレーティング・システム４３０に登録される。フォーカス・フック・モジュール４２０は、アプリケーション・アクティブ化イベントについて継続的に監視する。ユーザによるアプリケーションの選択、たとえば、アプリケーションの最初の稼動、オペレーティング・システム環境内でアプリケーション・ウィンドウをアクティブにするための切替、または類似物のいずれかによるアプリケーションのアクティブ化がある時に、フォーカス・フック・モジュール４２０が、アプリケーション・アクティブ化イベントを受け取る。図４には、アプリケーション４１０がオペレーティング・システム環境の「フォーカス」であることを示すために、アプリケーション・アクティブ化イベントがアプリケーション４１０から受け取られることが示されているが、実際には、フォーカス・フック・モジュール４２０が、オペレーティング・システム４３０からアプリケーション・アクティブ化イベントを受け取る。
【００３１】
アプリケーション・アクティブ化イベントに応答して、フォーカス・フック・モジュール４２０が、現在アクティブなアプリケーションと、そのアプリケーションがユニコード文字セットを使用できるかどうかを判定する。現在アクティブなアプリケーションの判定は、アプリケーション・アクティブ化イベントに含まれる情報に基づいて行うことができる。たとえば、アプリケーション・アクティブ化イベントのソースであるアプリケーションの名前、アプリケーション・クラス、他のタイプのアプリケーション識別子、または類似物が、アプリケーション・アクティブ化イベントに含まれる場合があり、これを使用して、現在アクティブなアプリケーションを識別することができる。
【００３２】
フォーカス・フック・モジュール４２０は、アプリケーションの名前、クラス名、または他のタイプのアプリケーション識別子を、フォーカス・フック・モジュール４２０によって維持されるかフォーカス・フック・モジュール４２０によってアクセス可能なユニコード対応アプリケーション識別子のリストと比較することによって、アプリケーションがユニコード機能を有するかどうかを判定することができる。たとえば、ユニコード対応アプリケーション識別子のリストは、コンピューティング・システム内で保管されるファイルで維持することができ、そのファイルに、フォーカス・フック・モジュール４２０によってアクセスして、現在アクティブなアプリケーションがユニコード対応であるかどうかを判定することができる。代替案では、ユニコード対応アプリケーション識別子のリストを、フォーカス・フック・モジュール４２０にハードコードすることができる。
【００３３】
これらの判定に基づいて、フォーカス・フック・モジュール４２０は、アプリケーションが現在アクティブであることと、アプリケーションがユニコード対応であることを示すフラグを、オペレーティング・システム４３０のアプリケーション・コンテキスト内でセットする。これらのフラグは、その後、キーボード・フック・モジュール４４０によって、キーボード・イベントをキーストローク変換モジュール４６０に送るかどうかと、ユニコード表現を貼り付けるためにどのアプリケーションに送るかを判定するのに使用される。
【００３４】
キーボード・フック・モジュール４４０は、コンピューティング・デバイスに取り付けられたキーボードを介するなど、ユーザがキーストロークを入力することに応答して、ＩＭＥ  ４００の入力インターフェース４５０からキーボード・イベントを受け取る。キーボード・フック・モジュール４４０は、現在アクティブ・アプリケーション・フラグおよび現在アクティブなアプリケーションのユニコード機能フラグを読み取って、アプリケーション４１０がユニコード入力を受け取ることができるかどうかを判定する。できない場合には、動作が終了し、キーボード・イベントは、ＩＭＥ  ４００が存在しないかのように普通の形で処理される。アプリケーション４１０がユニコード入力を受け取ることができる場合には、キーボード・フック・モジュール４４０は、キーボード・イベントをキーストローク変換モジュール４６０に転送する。
【００３５】
さらに、入力インターフェース４５０は、図３に示されたものなどの構成グラフィカル・ユーザ・インターフェースを提供して、ユーザがアプリケーションと共に利用することを望む文字セットをユーザが選択できるようにすることができる。提供される文字セットに、アプリケーション入力フィールドでこれらの文字セットを提示するのにユニコードの使用を必要とする文字セット、たとえば、中国文字セット、日本文字セット、インド文字セット、および類似物を含めることができる。
【００３６】
キーストローク変換モジュール４６０は、受け取ったキーボード・イベントをとり、これらのイベントに関連するキーストロークを、そのキーストロークのユニコード表現に変換する。この変換は、入力インターフェース４５０を介してユーザによって選択された特定の文字セットに基づいて実行することができる。したがって、キーストローク変換モジュール４６０は、ユニコード表現で識別される複雑な文字へのキーストロークの変換に関して、既存の入力方式エディタで既知の動作に類似する動作を実行する。この形で、ユーザによって行われたキーストロークを、アジア文字セット、インド文字セット、または他の複雑な文字セットに変換することができる。本明細書で使用される用語、アジア文字セットは、日本、中国、ベトナム、ラオス、および類似物を含むアジア諸国で使用される言語および筆記文字を指す。本明細書で使用される用語、インド文字セットは、インド亜大陸で使用される言語および筆記文字を指す。
【００３７】
ユーザによって入力されたキーストロークのユニコード表現が、次に、キーボード・フック・モジュール４４０に返される。キーボード・フック・モジュール４４０は、そのユニコード表現を一時ストレージ・メモリ４７０に保管する。この一時ストレージ・メモリ４７０は、好ましい実施形態ではクリップボードである。
【００３８】
クリップボードは、「コピーおよび貼付け」動作と「切取りおよび貼付け」動作を使用することによってあるアプリケーションから別のアプリケーションにコピーまたは移動されるデータの一時保持区域として使用される、メモリの予約済みセクションである。何かがクリップボードに転送されるたびに、クリップボードの以前の内容が削除される。クリップボードは、舞台裏の機能として働き、別のアプリケーションへの貼付けのためにその内容を保持する。
【００３９】
ユニコード表現を一時ストレージ・メモリ４７０に保管した後に、キーボード・フック・モジュール４４０は、フォーカスがあるアプリケーションにコマンドを送って、現在アクティブ・アプリケーション・フラグによって識別される現在アクティブなアプリケーション４１０に一時ストレージ・メモリ４７０の内容を貼り付ける。次に、一時ストレージ・メモリ４７０の内容が、アプリケーション４１０内で、アプリケーション４１０の入力フィールドのカーソルの位置に貼り付けられる。この形で、オペレーティング・システム４３０がユニコードをサポートしないか、ユニコードの制限されたサポートを有するのいずれかであり、ユーザによって選択された特定の文字セットがオペレーティング・システム４３０によって特にサポートされない場合であっても、キーボード・フック・モジュール４４０によって受け取られたキーボード・イベントに応答してキーストローク変換モジュール４６０によって生成された一時ストレージ・メモリ４７０に保管されたユニコード表現が、アプリケーション４１０に入力される。図５は、電子メール・アプリケーションに適用された時の本発明の主要な構成要素の相互作用を示すメッセージ・フロー図である。本発明は、ユーザからのテキスト入力がアプリケーションの１つまたは複数の入力フィールドで受け取られるすべてのアプリケーションと共に使用することができる。例として、図５で、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ，Ｉｎｃ．社のＬｏｔｕｓ  Ｎｏｔｅｓ（商標）またはＭｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ（商標）などの電子メール・アプリケーションを参照し、クリップボードを使用して、電子メール・アプリケーションに貼り付けられるテキスト入力のユニコード表現を一時的に保管する。
【００４０】
図５からわかるように、オペレーティング・システム５１０は、現在アクティブなアプリケーションとしてのアプリケーションのユーザ選択を受け取る。この選択は、たとえば、デスクトップでアプリケーションを表すアイコンの「ダブル・クリック」に応答するものなどのアプリケーションのロードおよび稼動、ツール・バーまたはデスクトップ内で開かれたウィンドウからの既にロードされ稼動しているアプリケーションの選択、または類似物とすることができる。図示の例では、選択されたアプリケーションが、ユーザの選択に応答してアクティブ化される電子メール・アプリケーション５３０である。
【００４１】
アプリケーションのアクティブ化に応答して、フォーカス・フック・モジュール５４０が、アクティブ化され、フォーカス・フック・モジュール５４０が、現在アクティブなアプリケーションとして電子メール・アプリケーション５３０を識別し、電子メール・アプリケーション５３０がユニコードを使用できるかどうかを判定する。電子メール・アプリケーション５３０がユニコードを使用できるとフォーカス・フック・モジュール５４０が判定した場合に、フォーカス・フック・モジュール５４０は、キーボード・フック・モジュール５５０にメッセージを送り、これによって、キーボード・イベントをリスンするためにキーボード・フック・モジュール５５０をアクティブ化する。フォーカス・フック・モジュール５４０は、次に、オペレーティング・システム５１０のアプリケーション・コンテキスト内でアクティブ・アプリケーション・フラグおよびユニコード機能フラグをセットする。
【００４２】
少し後に、または上の処理の前に、ユーザが、電子メール・アプリケーション５３０と共に使用される文字セットを選択することができる。この文字セットは、たとえば本発明のＩＭＥを介してユニコードを使用することによってのみ入手可能な複雑な文字セットとすることができる。ＩＭＥインターフェース５２０が、アクティブ化され、コンピューティング・デバイスに関連するキーボードからユーザ・キーストロークを受け取る。
【００４３】
受け取られたキーストロークは、キーボード・イベントの生成に使用され、このキーボード・イベントが、キーボード・フック・モジュール５５０に転送される。電子メール・アプリケーション５３０は、ユニコードをサポートすると判定されている（たとえば、フォーカス・フック・モジュール５４０によってセットされたフラグに基づいて）ので、キーボード・フック・モジュール５５０は、このキーボード・イベントをＩＭＥエンジン５６０に送る。ＩＭＥエンジン５６０は、キーボード・イベントをユニコード表現に変換し、このユニコード表現をキーボード・フック・モジュール５５０に送り返す。
【００４４】
キーボード・フック・モジュール５５０は、ユニコードを電子メール・アプリケーション５３０の入力フィールドに貼り付けられるようにするために、このユニコード表現を一時的にクリップボード５７０に保管する。その後、キーボード・フック５５０は、電子メール・アプリケーション５３０に貼付けコマンドを送る。クリップボード５７０は、クリップボード５７０に保管されたユニコード表現を、電子メール・アプリケーション５３０のアプリケーション・インターフェースすなわち、カーソルが現在ある入力フィールドに貼り付ける。この形で、アプリケーションは、オペレーティング・システムがユニコードをサポートしない場合であってもユニコード入力を受け取り、そのユニコードをディスプレイ・スクリーン上のアプリケーション・ウィンドウ内の適当な文字表現に変換することができる。したがって、ユーザは、ユニコードをサポートしないレガシ・オペレーティング・システムを有するコンピューティング・デバイスに結合された標準キーボードで電子メール・メッセージを入力でき、ユーザによって選択された複雑な文字セットでディスプレイ・スクリーン上で表された電子メール・メッセージを見ることができる。
【００４５】
図６は、本発明の例示的動作の概要を示す流れ図である。図６からわかるように、この動作は、フォーカス選択を受け取ること（ステップ６１０）によって開始される。用語「フォーカス」は、ユーザが現在インターフェースしているアプリケーションとしての現在アクティブなアプリケーションの選択を示すことを意味する。
【００４６】
次に、フォーカス・フック・モジュールをアクティブ化し（ステップ６２０）、アプリケーションがユニコードをサポートするかどうかに関する判定を行う（ステップ６３０）。そうでない場合には、この動作は終了する。そうである場合には、キーボード・フック・モジュールをアクティブ化し（ステップ６４０）、このキーボード・フック・モジュールが、キーストローク入力を受け取り、ユニコード表現への変換のためにキーボード・イベントを生成する。
【００４７】
受け取られたキーストロークに応答してキーボード・フック・モジュールによって生成されたキーボード・イベントを、ＩＭＥエンジンに送る（ステップ６５０）。ＩＭＥエンジンは、これらのキーボード・イベントをユニコード文字すなわちキーボード・イベントのユニコード表現に変換する（ステップ６６０）。ユニコード文字をキーボード・フック・モジュールに送り返し（ステップ６７０）、キーボード・フック・モジュールは、これをクリップボードなどの一時ストレージ・メモリに保管する（ステップ６８０）。次に、キーボード・フック・モジュールは、アプリケーションに貼付けコマンドを送り、そこに保管されたユニコード文字を、アプリケーションの入力フィールドのカーソル位置に貼り付けさせ（ステップ６９０）、この動作が終了する。
【００４８】
したがって、本発明を用いると、そのオペレーティング・システムがユニコードをサポートしないコンピューティング・デバイスでユニコード入力を受け取ることができる。この形で、ユニコード対応アプリケーションを、レガシ・オペレーティング・システムと共に、完全なユニコード機能と共に使用することができる。本発明を用いると、オペレーティング・システムがユニコードをサポートしないか、ユーザの特定の言語の複雑な文字セットをサポートできない場合であっても、ユーザが、自分自身の言語の複雑な文字セットでユニコード対応アプリケーションとインターフェースすることができる。
【００４９】
本発明を、完全に機能するデータ処理システムに関して説明したが、本発明の処理を、命令のコンピュータ可読媒体の形およびさまざまな形で配布することができることと、本発明が、配布の実行に実際に使用される信号担持媒体の特定のタイプに関わりなく同等に適用されることを当業者が諒解するであろうことに留意することが重要である。コンピュータ可読媒体の例に、フロッピ・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの記録可能型媒体と、ディジタル通信リンク、アナログ通信リンク、たとえばラジオ周波数伝送および光波伝送などの伝送形式を使用する有線通信リンクまたは無線通信リンクなどの伝送型媒体が含まれる。コンピュータ可読媒体は、特定のデータ処理システムでの実際の使用のために復号されるコード化されたフォーマットの形をとることができる。
【図面の簡単な説明】
【００５０】
【図１】本発明を実施できるコンピューティング・デバイスを示す例示的な図である。
【図２】本発明を実施できるコンピューティング・デバイスの主な動作構成要素を示す例示的なブロック図である。
【図３】本発明の例示的実施形態による、入力方式エディタの構成グラフィカル・ユーザ・インターフェースを示す例示的な図である。
【図４】本発明による、レガシ・オペレーティング・システムの入力方式エディタを示す例示的なブロック図である。
【図５】電子メール・アプリケーションに適用された時の本発明の主要な構成要素の相互作用を示すメッセージ・フロー図である。
【図６】本発明の例示的動作の概要を示す流れ図である。
【符号の説明】
【００５１】
１００  コンピュータ
１０２  システム・ユニット
１０４  ビデオ・ディスプレイ端末
１０６  キーボード
１０８  ストレージ・デバイス
１１０  マウス
２００  データ処理システム
２０２  プロセッサ
２０４  メイン・メモリ
２０６  ＰＣＩローカル・バス
２０８  ＰＣＩブリッジ
２１０  ＬＡＮアダプタ
２１２  ＳＣＳＩホスト・バス・アダプタ
２１４  拡張バス・インターフェース
２１６  オーディオ・アダプタ
２１８  グラフィックス・アダプタ
２１９  オーディオ／ビデオ・アダプタ
２２０  キーボードおよびマウス・アダプタ
２２２  モデム
２２４  追加メモリ
２２６  ハード・ディスク・ドライブ
２２８  テープ・ドライブ
２３０  ＣＤ−ＲＯＭドライブ
４００  入力方式エディタ
４１０  アプリケーション
４２０  フォーカス・フック・モジュール
４３０  オペレーティング・システム
４４０  キーボード・フック・モジュール
４５０  入力インターフェース
４６０  キーストローク変換モジュール
４７０  一時ストレージ・メモリ
５１０  オペレーティング・システム
５２０  ＩＭＥインターフェース
５３０  電子メール・アプリケーション
５４０  フォーカス・フック・モジュール
５５０  キーボード・フック・モジュール
５６０  ＩＭＥエンジン
５７０  クリップボード
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
キーボード入力を受け取るステップと、
前記キーボード入力を前記キーボード入力のユニコード表現に変換するステップと、
前記キーボード入力の前記ユニコード表現をクリップボード・メモリに保管するステップと、
前記キーボード入力の前記ユニコード表現を前記クリップボード・メモリから現在アクティブなアプリケーションに貼り付けるように前記現在アクティブなアプリケーションに指示するステップと
を含む、ユニコードをサポートしないオペレーティング・システム環境で前記現在アクティブなアプリケーションにテキストを入力する方法。
【請求項２】
前記現在アクティブなアプリケーションは、前記アプリケーションがユーザによって選択された時に生成されたアプリケーション・アクティブ化イベントに基づいて識別される、請求項１に記載の方法。
【請求項３】
前記現在アクティブなアプリケーションがユニコード機能を有するかどうかを判定するステップをさらに含み、前記変換するステップ、前記保管するステップ、および前記指示するステップは、前記現在アクティブなアプリケーションがユニコード機能を有する場合に限って実行される、請求項１に記載の方法。
【請求項４】
テキストを入力するのに使用される文字セットを選択するグラフィカル・ユーザ・インターフェースを提供するステップと、
これによって選択された文字セットを生成するために前記グラフィカル・ユーザ・インターフェースを介して文字セット選択を受け取るステップであって、前記キーボード入力の前記ユニコード表現への変換は、前記選択された文字セットのユニコード表現への前記キーボード入力の変換を含む、前記受け取るステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記現在アクティブなアプリケーションがユニコード機能を有するかどうかの判定は、
前記現在アクティブなアプリケーションの識別子をユニコード機能を有するアプリケーションの識別子のリストと比較するステップと、
前記現在アクティブなアプリケーションの前記識別子が識別子の前記リストに存在する場合に、前記現在アクティブなアプリケーションがユニコード機能を有すると判定するステップと
を含む、請求項３に記載の方法。
【請求項６】
データ処理システムで実行された時に、請求項１に記載の方法を実行するように前記データ処理システムに指示する、コンピュータにより実行可能なコンピュータ・プログラム・コードを含むコンピュータ・プログラム。
【請求項７】
キーボード入力を受け取る手段と、
前記キーボード入力を前記キーボード入力のユニコード表現に変換する手段と、
前記キーボード入力の前記ユニコード表現をクリップボード・メモリに保管する手段と、
前記キーボード入力の前記ユニコード表現を前記クリップボード・メモリから現在アクティブなアプリケーションに貼り付けるように前記現在アクティブなアプリケーションに指示する手段と
を含む、プログラムにテキストを入力する装置。
【国際調査報告】
2007538295.tif 000009
2007538295.tif 000010
2007538295.tif 000011