"汎用型リモコン装置をプログラミングする方法であって、リモコン装置の学習プログラムにおいて、デバイスを制御するためのオリジナルのリモコン装置からの、又は、前記デバイスを制御するためにプログラムされた他の汎用型リモコン装置からの、1よりも多くのコマンドを有するコマンドシーケンスを実行するようにユーザにリクエストするステップと、前記シーケンスからの取得されたコマンドを解析するステップと、解析されたコマンドを、コードツリーデータベースのブランチ又はコードセットとマッチングさせるステップと、前記デバイスを含む動作を実行するためのマクロを生成するために前記コマンドシーケンスを用いるステップとを有する、方法。前記リモートコントロール学習プログラムにおいて、仮想デバイスが、前記オリジナルのリモートコントロールにより制御される前記デバイスに対応して起動され、前記仮想デバイスのステータスは、取得され解析されたコマンドに応じて変えられる、請求項1に記載の方法。前記リモートコントロール学習プログラムは、パーソナルコンピュータ上のアプリケーションである、請求項1に記載の方法。前記パーソナルコンピュータは、直接的に又は前記汎用型リモコン装置を介して前記コマンドを取得する、請求項3に記載の方法。前記オリジナルのリモコン装置により制御される前記デバイスのデバイスタイプ及びブランド名を入力することをユーザにリクエストする更なるステップを有する、請求項1に記載の方法。解析されたコマンドを用いて、マッチしたコードセット又はコードツリーを改良する更なるステップを有する、請求項1に記載の方法。解析されたコマンドがマッチされ得る利用可能なコードツリーデータベースのブランチがないか又はコードセットがない場合において、前記オリジナルのリモコン装置のコードを学習する更なるステップを有する、請求項1に記載の方法。当該方法が用いられるデバイスに関する統計データを収集する更なるステップを有する、請求項1に記載の方法。ユーザは、前記動作に加わるデバイスを選択するようにリクエストされ、全ての選択されたデバイスに関するコマンドを含むコマンドシーケンスを実行することによりマクロを記録する、請求項1に記載の方法。コンピュータプログラムがプログラム可能なハードウェア上で動作したときに、請求項1~9のうちいずれか一項に記載の方法のステップを実行するように適合されたコンピュータプログラムコード手段を有する、コンピュータプログラム。リモコン装置の学習プログラムにおいて、デバイスを制御するためのオリジナルのリモコン装置からの、又は、前記デバイスを制御するためにプログラムされた他の汎用型リモコン装置からの、1よりも多くのコマンドを有するコマンドシーケンスを実行するようにユーザにリクエストし、前記シーケンスからの取得されたコマンドを解析し、解析されたコマンドを、コードツリーデータベースのブランチ又はコードセットとマッチングさせ、前記デバイスを含む動作を実行するためのマクロを生成するために前記コマンドシーケンスを用いるように構成されたコントローラを有する、システム。本発明の目的は、汎用リモコン装置URCをプログラムするためにリモートコントロールコマンドを学習させる改良された方法及びシステムを提供することにある。本発明は、独立請求項により規定される。従属請求項は、有利な実施形態を規定する。有利には、本発明は、オリジナルのリモコン装置からの情報を取得する点について更にステップを行い、コードの一致だけでなく、リモコン装置が幾つかの動作例えば、デバイスのオン及びオフ、デバイスの入力切替等を実行するためにユーザによりどのように用いられるかについての情報も取得する。本発明の第1の態様によれば、汎用型リモコン装置をプログラミングする方法であって、リモコン装置の学習プログラムにおいて、デバイスを制御するためのオリジナルのリモコン装置からの、又は、前記デバイスを制御するためにプログラムされた他の汎用型リモコン装置からの、1よりも多くのコマンドを有するコマンドシーケンスを実行するようにユーザにリクエストするステップと、前記シーケンスからの取得されたコマンドを解析するステップと、解析されたコマンドを、コードツリーデータベースのブランチ又はコードセットとマッチングさせるステップと、前記デバイスを含む動作を実行するためのマクロを生成するために前記コマンドシーケンスを用いるステップとを有する、方法が提供される。コマンドシーケンスを実行することをユーザにリクエストすることにより、ユーザがデバイスをどのように制御するかについての動作データが収集され得る。例えば、どのコードコマンドがデバイスをオフにするために用いられるか、どのコードがデバイスをオンにするために用いられるか、ユーザがどのようにマルチデジタルチャンネル例えばチャンネル25に切り替えるか、ユーザがどのようにデバイス上の或る入力例えばHDMI-2に切り替えるか等についての情報が取り出され得る。この動作データは、動作に関連したマクロを自動的に生成するために用いられる。一例として、ユーザは、一般的に言えば、パワートグルボタンを押すことにより、チャンネルボタン例えば1を押すことにより、又は、チャンネルアップボタンを押すことにより、スタンバイモードにあるTVをオンにし得る。しかしながら、一部の旧式のTV装置において、パワートグルボタンが、TVをオフにするために用いられるだけであり、TVをオンにするためには用いられない場合もある。従って、斯様なTV装置をオンにするステップを含むマクロを作成する場合において、この目的のためのパワートグルボタンに対応するコードの使用は避けられるべきである。動作データを収集することにより、ユーザがTV装置をオンにするためにパワートグルボタンを用いないことを通知することができ、マクロにおける対応するコードの使用が避けられ得る。マクロの生成が明らかではない他の例は、AppleTV,iPod又はMacを制御するために用いられる、Apple社のリモコン装置である。このリモコン装置のコードセットはパワーコードをもたない。それ故、コードセットを調べることによっては、制御されたデバイスがどのようにオンにされるかを知ることはできない。AppleTVをオンにするためにボタンを押すことをユーザに尋ねることにより、この目的のために用いられるコードこの場合においてはメニューボタンが取り出され、その情報は、後にマクロの生成に用いられ得る。更に他の例は、アンプ/チューナ及びDVDプレーヤをもつホームシアターシステムの場合であり、例えば、チューナが入力1に接続され、DVDプレーヤがTV装置の入力2に接続される。しばしば、コードセットは、チューナに切り替えるための特定のコードtunerを有さない。チューナに切り替えるようにユーザにリクエストし、この目的のために入力1のコードを用いるという情報を取り出すことにより、マクロは、チューナをオンにするという動作のために生成され、TV及びチューナの双方がオンにされ、TVが入力1に切り替えられる。更なる利点は、オリジナルのリモコン装置からのコマンドを取得することにより、URCは、オリジナルのリモコン装置のタイミングをより良くマッチさせるようにそのタイミングを調節することができる。例えば、幾つかのブランドのリモコン装置は、信頼性の目的で、他のもの0.5秒よりも長い時間例えば2秒の間、パワーオン/オフのような幾つかのコマンドを出力する。斯様な挙動をURCにコピーすることにより、より確実な手法でオリジナルのリモコン装置に対応するデバイスを制御することができる。更に、汎用型リモコン装置は、保証された成功のためにデータベースコマンドの代わりに取得されたコマンドを用いることができる。一実施形態によれば、リモートコントロール学習プログラムにおいて、仮想デバイスが、オリジナルのリモートコントロールにより制御されるデバイスに対応して起動され、仮想デバイスのステータスは、取得され解析されたコマンドに応じて変えられる。この手法において、ユーザに直感的なフィードバックが与えられ、仮想デバイスは、実際のデバイスと同じ態様でコマンドに反応する。他の実施形態によれば、リモートコントロール学習プログラムは、直接的に又は汎用型リモコン装置を介してコマンド取得するパーソナルコンピュータ上のアプリケーションである。結果として、汎用リモコン装置のプログラミングは、最近ではほとんどの家庭で利用可能な装置PCにより実行され得る。更に他の実施形態によれば、本方法は、オリジナルのリモコン装置により制御されるデバイスのデバイスタイプ及びブランド名を入力することをユーザにリクエストする更なるステップを有する。この情報は、正しい仮想デバイスを表示するために用いられ得る。更に他の実施形態によれば、本方法は、解析されたコマンドを用いて、マッチしたコードセット又はコードツリーを改良する更なるステップを有する。時々、既存のコードセット又はコードツリーは、不十分であるか又はデバイスを制御するために用いられるコードセット/コードツリーと完全には一致しない幾つかのコマンドは一致し、幾つかの他のものは一致しない。この場合において、これは、誤ったコマンドを置換し、及び/又は、オリジナルのリモコン装置から受信されるコマンドをもつコマンドを追加するために役立つ。更に他の実施形態によれば、本方法は、解析されたコマンドがマッチされ得る利用可能なコードツリーデータベースのブランチがないか又はコードセットがない場合において、オリジナルのリモコン装置のコードを学習する更なるステップを有する。結果として、新たなもの即ち、データベースにおいて前に利用可能ではなかったコードセットも学習され、アクティビティマクロ生成のために用いられ得る。更に他の実施形態によれば、本方法は、当該方法が用いられるデバイス及びこれらの対応するコードセットに関する統計データを収集するステップを有する。この手法において、前記コードセットが優先され、どれが他のものよりも人気があるかが決定され得る。更に、旧式のほとんど用いられていないコードセットが決定され、メモリスペースを節約するためにサーバ又はデータベースから削除され得る。更に他の実施形態によれば、ユーザは、前記動作に加わるデバイスを選択するようにリクエストされ、マクロは、全ての選択されたデバイスに関するコマンドを含むコマンドシーケンスを実行することにより記録される。従って、複数のデバイスに関するマクロが便利に取得され得る。好ましくは、本発明の方法は、任意のハードウェア例えば、コンピュータ、デジタル信号プロセッサ、フィールドプログラム可能ゲートアレイ、アプリケーション特定用途向け集積回路、マイクロプロセッサ、又は、マイクロコントローラ上で実行し得るコンピュータプログラムにより実装される。コンピュータプログラムがコンピュータ読み取り可能な媒体上で具現され得るか、又は、キャリア媒体がコンピュータプログラムを実行し得る。本発明の第2の態様によれば、リモコン装置の学習プログラムにおいて、デバイスを制御するためのオリジナルのリモコン装置からの、又は、前記デバイスを制御するためにプログラムされた他の汎用型リモコン装置からの、1よりも多くのコマンドを有するコマンドシーケンスを実行するようにユーザにリクエストし、前記シーケンスからの取得されたコマンドを解析し、解析されたコマンドを、コードツリーデータベースのブランチ又はコードセットとマッチングさせ、前記デバイスを含む動作を実行するためのマクロを生成するために前記コマンドシーケンスを用いるように構成されたコントローラを有する、システムが提供される。一実施形態において、本システムはURCであり得る。本発明のこれらの及び他の態様は、後述される実施形態から明らかになり、これらの実施形態を参照して説明されるだろう。本発明のこれらの及び他の態様は、以下の説明における例により説明される実施形態及び添付図面から明らかになり、これらを参照して更に説明されるだろう。図中、類似の参照番号は類似の要素に言及する。図1は、第1の例のシステム100のブロック図である。システム100は、ホームエンターテイメントシステムである。システム100は、第1の装置102、ここではTV装置を有する。装置102は、ユーザ制御可能な複数の機能、例えばTVのオン/オフ、チャンネルのアップ/ダウン、ミュート、ブライトネスのアップ等をもつ。TV装置102は、対応するリモコン装置103をもつ。また、システム100は、複数のユーザ制御可能な機能オン、再生、早送り、ディスク取り出し等をもつ第2の装置104、ここではDVDプレーヤを有する。また、DVDプレーヤ104は、対応するリモコン装置105をもつ。システム100は、プログラム可能な汎用型リモコン装置URC110を更に有する。URCは、IRレシーバ112、IRトランスミッタ114、関連するメモリをもつプロセッサとして実装されたコントローラ116、メモリ118、及び、複数のユーザ入力例えば、ボタン又はGUI上のソフトキー;図示省略をもつユーザインタフェースUI120を有する。複数のユーザ入力は、URC110がプログラムされると複数の制御信号コマンドのうち特定の1つを送ることにより装置102,104の機能のうち特定の1つの選択的制御を提供する。システム100は、URC110のプログラミングのためのパーソナルコンピュータPC130を更に有する。PCは、関連するメモリをもつプロセッサとして実装されたコントローラ132と、複数のデータをもつデータベースを格納するメモリ134とを有する。各データは、圧縮されたデジタルフォーマットにおける制御コマンド信号のそれぞれのセットを表す。各セットは、複数の装置のそれぞれの制御に関する制御コマンドを有する。装置は、タイプが異なってもよく例えば、DVDプレーヤに対するTVレシーバ、及び/又は、装置は、ブランドが異なってもよい例えば、Philips,Marantz等。PCは、従来どおり、ディスプレイ136及びユーザインタフェース138例えばキーボード及びマウスを更に有する。URC110は、良く知られているように、通信ポートを介してPC130に接続され、PCのIRレシーバとして機能する。代わりに、PCは、IRコマンドを受信するための別個のIRレシーバを有してもよく、URCは、PC130の他のポートに接続されてもよい。URC110のIRレシーバ112は、TV装置102及びDVDプレーヤ104に付属するオリジナルのリモコン装置103,105のうち1つにより与えられた制御コマンドを受信する。制御コマンド又はコード、タームコード及びコマンドがこの説明において同義語として用いられるは、例えば、会社ZPhilipsにより製造されたタイプYの装置TV装置102の機能Xパワーオンを制御するIR制御信号である。IRレシーバ112は、取得した特定の信号をサンプリングし、サンプリングされた信号を圧縮データのデジタル語に変換し、これは、それ自体知られた手法でPCに転送される。PCのコントローラ132は、デジタル語を解析し、メモリ134がこのデジタル語を表すデータアイテムを格納しているかどうかを確認するためにメモリ134に問い合わせる。コントローラ132が一致するデータアイテムを取り出す場合には、第1の可能性に従って、この特定の制御信号を含む制御信号の完全なセットに対応するデータが一致するものとして識別される。即ち、識別は、レシーバ112により受信された特定の制御信号に基づいて達成される。セットが識別されると、PC130は、識別されたセットの制御コマンドを複数のユーザ入力と関連付けるようにプログラム可能なコントローラ116を設定する。DVDプレーヤ104のためのURC110の設定は、この直後に、DVDプレーヤ104に付属するリモコン装置105を用いて、同様の態様で達成される。コードセットをもつデータベースは、当然に、PCのメモリ134の代わりにインターネットによりアクセス可能な外部サーバにより与えられてもよい。第2の可能性によれば、コードセットの代わりに赤外線IRツリーが用いられる。コードセットを一致させるためのこの技術は、国際公開第2009/107029号においてより詳細に述べられている。このアプローチにおいて、同一のパワートグルコードをもつコードセットは、1つのIRツリーにグループ化される。ここで前述された第1のアプローチとの主な違いは、IRツリーにおいては各コードが幾つかの選択肢事象を持ち得ることである。これらの事象は、人気順に格納される。この時点では、幾つかの機能に関するツリー内に幾つかの取り得るIRコードが依然として存在する。例えば、受信したパワートグルコードに基づいてIRツリーを選択した後、ボリュームキーのための幾つかの可能性が依然として存在する。仮想TV上のボリュームを上げることをユーザに尋ねることにより、どのボリューム機能のセットが用いられるべきかについての情報が得られる。より多くの情報がリモコン装置から収集されるほど、IRコードのセットがより正確になる。この例においてはTV装置102のためのコントローラとしてこのデバイスを設定するように、識別されたセットの信号をURC110のメモリ118に書き込むことは、それ自体知られた及び米国特許第5,819,294号明細書において詳細に述べられた様々な態様で実現され得る。図3は、コントローラ132により実行されたリモートコントロール学習プログラムを示すフロー図である。これに加えて、そのプロセッサの関連するメモリが適切なソフトウェアアプリケーションによりロードされる。ユーザが汎用型リモコン装置によりTV装置を制御したいと仮定する。URCがプログラムされたデバイスのセットにTV装置を追加したいことを選択し、TV装置のブランドを入力した後ステップ302、シミュレーションされた仮想TV装置202が、図2に示されるように、コンピュータのディスプレイ136上に現れるステップ304。TV装置202は再生中である。ユーザは、或る動作、この場合においてはこの仮想TV装置202をオフにすることを実行するためにオリジナルのリモコン装置103を用いることを尋ねられるステップ306。赤外線コードは、取得されて解析されるステップ308。取得されたコードはデータベース内の情報と単純に比較するほど十分正確ではないので、これは解析されなければならない。ユーザリモコン装置を振っている等のような、IR信号のタイミングに関して許容誤差が存在する。信号は、解析される必要がある。即ち、データベース中のデータと比較するために処理され、クリーンアップされ、単純化される必要がある。そして、コードは、デバイス及びブランドに関するIRコードの最も可能性の高いセットにマッチされステップ310、仮想TV装置202はオフになるステップ312。ステップ310及び312は、必ずしもこの順序で実行される必要はない。代わりに、マッチングは、バックグラウンドで行われてもよく、これにより、ユーザインタフェースの応答性を維持する。ユーザにより入力されるべきコマンドシーケンスの全てのコマンドが取得されたかどうかを確認した後ステップ314、本方法は、ステップ306に戻り、ユーザは、仮想TV装置202をオンにすることを尋ねられる。赤外線コードが取得されるとステップ308、マッチングステップ310が再び実行され、TV装置に関するコードセットの任意の微調整が可能であり仮想TVがオンになるかどうかを確認するステップ312。アプリケーションは、このTV装置をオン及びオフにする方法を知っているので、単一のボタン押下で複数のデバイスがオン及びオフに切り替えられる動作マクロを生成するためにこの情報を容易に用いることができる。ステップ306~312は、更なるコマンドに対して繰り返され得る。例えば、ユーザは、ボリュームを上げること、或るチャンネルに切り替えること、カーソルキーを用いること等を尋ねられる。これらのIRコードコマンドの全てが取得され、アプリケーションがこのTVのために用いられるIRコードのセットを更に微調整し、良好な動作マクロを生成することを可能にするステップ316。この例の拡張は、仮想デバイスのセットとインタラクトすることにより動作マクロを記録するために用いられ得る。例えば、図3を参照して述べられた前述した方法によりTVセット及びDVDプレーヤを追加した後、ユーザは、DVDを観るというアクティビティを追加することを望む。ユーザは、このアクティビティに加わるデバイスを選択することを尋ねられ、これら2つのデバイスを選択する。2つのデバイス、即ちTV装置202及びDVDプレーヤ204は、コンピュータのディスプレイ136上に現れ、これらのデバイスとインタラクトすることによりマクロを記録し得る。ユーザは、オリジナルのリモコン装置103,105を用いることにより、又は、これらの2つのデバイスとインタラクトするために既にプログラムされた汎用型リモコン装置を用いることにより、デバイスとインタラクトすることができる。従って、この実施形態において、単一のコマンドシーケンスが2つのデバイスを制御するために用いられる。図4は、システム100の代替例を示している。ここで、URC400自体のコントローラ116は、URCをプログラミングするためのソフトウェアアプリケーションを備えている。コントローラ116は、コードセットをもつデータベースを有するメモリ回路402に結合される。URCは、フィードバックを与えるためのディスプレイ404を更に有し、仮想デバイス202,204を表示するのと同様にユーザに指示する。他の例において、ソフトウェアアプリケーションは、IRレシーバに有線又は無線で接続されたスマートフォンのようなモバイルコンピューティングデバイス上で動作する。PC/URCのメモリにおける不十分なコードセット又はコードツリーは、オリジナルのリモコン装置103,105のうち1つから受信された、取得され解析されたコマンドを用いて改良され得る。更に、解析されたコマンドがマッチし得る利用可能なコードツリーデータベースのブランチがないか又はコードセットがない場合において、オリジナルのリモコン装置のコードが1つずつ学習され得る。本方法が用いられるデバイスに関する統計データが収集され得る。コードツリーは人気ランキングに基づいて幾つかのコードセットを組み合わせるデータ構造であるので、データベース供給者により提供された情報だけに頼る代わりに、統計データを収集することにより、ツリーのルートrootが常に最も人気のあるコードセットであることが推定され得る。更に、この手法において、データベース中のどのコードセットが頻繁に用いられるか又はどれが旧式であるのかが決定され得る。旧式のものは、メモリスペースを節約するためにデータベースから削除され得る。前述された実施形態は、本発明を限定するよりむしろ例示であり、当業者は、特許請求の範囲から逸脱することなく多くの代替実施形態を設計することが可能であることが理解されるべきである。特定の手段が相互に異なる従属請求項に記載されるという単なる事実は、これらの手段の組み合わせが有利に用いられ得ないことを示すものではない。有するという用語は、記載されたものとは異なる要素又はステップの存在を除外するものではなく、要素の単数表記は斯様な要素の複数の存在を除外するものではない。任意の参照符号は、請求項の範囲を限定するものではない。本発明は、ハードウェア及びソフトウェアの双方により実装されてもよく、幾つかの要素は、ハードウェア又はソフトウェアの同一アイテムにより表されてもよく、プロセッサは、場合によりハードウェア要素と協働して、1又はそれ以上の機能を満たしてもよい。"