現在アクティブなデスクトップの中で実行するように構成されたウィンドウのないランタイム環境内で実行するように構成された、動的入力装置上に画像を動的に表示するための1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションと、前記現在アクティブなデスクトップの中の前記ウィンドウのないランタイム環境の外部で実行し、現在のコンテキストに対応する入力装置ユーザーインターフェースランタイムアプリケーションを指定するように構成された支配的アプリケーションであって、前記指定された入力装置ユーザーインターフェースランタイムアプリケーションが、前記動的入力装置上に仮想制御を動的に表示するように、かつ前記仮想制御の起動を当該支配的アプリケーションに伝えるように構成された、支配的アプリケーションとを含む、コンピューターシステム。前記ウィンドウのないランタイム環境が、2つ以上のさまざまな支配的アプリケーションによって指定された入力装置ユーザーインターフェースランタイムアプリケーションを実行するように構成された、共有のウィンドウのないランタイム環境である、請求項1に記載のコンピューターシステム。前記ウィンドウのないランタイム環境が、前記支配的アプリケーションによって提供され、前記支配的アプリケーションによって指定された入力装置ユーザーインターフェースランタイムアプリケーションを実行するように構成された、ローカルのウィンドウのないランタイム環境である、請求項1に記載のコンピューターシステム。前記ウィンドウのないランタイム環境が、Microsoft登録商標ActiveX登録商標制御である、請求項1に記載のコンピューターシステム。前記Microsoft登録商標ActiveX登録商標制御が、Microsoft登録商標Silverlight商標プラグインである、請求項4に記載のコンピューターシステム。前記Microsoft登録商標ActiveX登録商標制御が、Adobe登録商標Flash登録商標プラグインである、請求項4に記載のコンピューターシステム。前記1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションが、Microsoft登録商標Silverlight商標アプリケーションである、請求項1に記載のコンピューターシステム。前記1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションが、1つまたは複数のMicrosoft登録商標Silverlight商標のXAPファイルとしてカプセル化された、請求項1に記載のコンピューターシステム。前記支配的アプリケーションが、前記入力装置ユーザーインターフェースランタイムアプリケーションを指定するための第1のコールと、前記指定された入力装置ユーザーインターフェースランタイムアプリケーションが前記仮想制御の起動を前記支配的アプリケーションに伝えるための第2のコールとを含むアプリケーションプログラミングインターフェースをさらに含む、請求項1に記載のコンピューターシステム。前記動的入力装置上に動的に表示された前記仮想制御が前記支配的アプリケーションの前記現在のコンテキストに対応するように、前記支配的アプリケーションの現在のコンテキストが変化すると、前記支配的アプリケーションが、前記ウィンドウのないランタイム環境内で実行された前記1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションを変更することが可能になるように、前記アプリケーションプログラミングインターフェースが構成された、請求項9に記載のコンピューターシステム。支配的アプリケーションが入力装置ユーザーインターフェースを動的入力装置において実施するための方法であって、前記支配的アプリケーションの第1のコンテキストを判定するステップと、前記支配的アプリケーションによって実行され、かつ前記支配的アプリケーションの前記第1のコンテキストに対応するデスクトップユーザーインターフェースとは別個の第1の入力装置ユーザーインターフェースを指定するステップであって、前記第1の入力装置ユーザーインターフェースが、前記動的入力装置上に仮想制御の第1の組を動的に表示するように、かつ仮想制御の前記第1の組の起動を前記支配的アプリケーションに伝えるように構成された、ステップと、前記支配的アプリケーションの前記第1のコンテキストとは異なる、前記支配的アプリケーションの第2のコンテキストを判定するステップと、前記支配的アプリケーションとは別個であり、前記第1の入力装置ユーザーインターフェースとは異なる第2の入力装置ユーザーインターフェースを指定するステップであって、前記第2の入力装置ユーザーインターフェースが、前記支配的アプリケーションの前記第2のコンテキストに対応し、前記動的入力装置上に仮想制御の第2の組を動的に表示するように、かつ仮想制御の前記第2の組の起動を前記支配的アプリケーションに伝えるように構成された、ステップとを含む方法。前記第1の入力装置ユーザーインターフェースを指定するステップが、2つ以上のさまざまな支配的アプリケーションによって指定された入力装置ユーザーインターフェースを実行するように構成された、共有のウィンドウのないランタイム環境に、前記第1の入力装置ユーザーインターフェースを配信するステップを含む、請求項11に記載の方法。前記第1の入力装置ユーザーインターフェースを指定するステップが、前記支配的アプリケーションによって提供され、前記支配的アプリケーションによって指定された入力装置ユーザーインターフェースを実行するように構成された、ローカルのウィンドウのないランタイム環境に、前記第1の入力装置ユーザーインターフェースを配信するステップを含む、請求項11に記載の方法。前記第1の入力装置ユーザーインターフェースが、アプリケーションプログラミングインターフェースを介してウィンドウのないランタイム環境に配信される、請求項11に記載の方法。前記第1の入力装置ユーザーインターフェースが前記ウィンドウのないランタイム環境内で実行されると、前記アプリケーションプログラミングインターフェースが、前記支配的アプリケーションと前記第1の入力装置ユーザーインターフェースとの間の通信チャネルを提供する、請求項14に記載の方法。0002システム全体のアクティブフォーカスを実施する多くのシステムでは、キーボード入力および他のタイプの入力を、システム全体のアクティブフォーカスをもつアプリケーション以外のアプリケーションに転じるためのメカニズムは存在しない。0003本開示の一態様によるコンピューターシステムは、動的入力装置上に画像を動的に表示するための1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションを含む。1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーションは、現在アクティブなデスクトップの中で実行される。コンピューターシステムは、さらに、現在アクティブなデスクトップの中で実行するように構成された支配的アプリケーションを含む。支配的アプリケーションは、支配的アプリケーションの現在のコンテキストに対応する入力装置ユーザーインターフェースランタイムアプリケーションを指定するように構成されている。指定された入力装置ユーザーインターフェースランタイムアプリケーションは、動的入力装置上に仮想制御を動的に表示するように構成されている。また、指定された入力装置ユーザーインターフェースランタイムアプリケーションは、仮想制御の起動を支配的アプリケーションに伝えるように構成されている。0004この発明の概要は、発明を実施するための形態において下記でさらに説明する概念の選択された項目を簡略化された形で紹介するために提供される。この発明の概要は、特許請求された主題の主要な特徴または本質的な特徴を識別するものでも、特許請求された主題の範囲を限定するために使用されるものでもない。さらに、特許請求された主題は、本開示の任意の箇所で指摘される一部または全部の不都合を解決する実装形態に限定されない。0013キーボードおよび他のタイプの入力を、システム全体のアクティブフォーカスをもつアプリケーション以外のアプリケーションに配信するためのシステムおよび方法が開示される。下記で説明するように、動的入力装置からのタッチ入力および他のタイプの入力は、ウィンドウのないランタイム環境を提供するコンテナモジュールによって処理することができ、ウィンドウのないランタイム環境内では、入力装置ユーザーインターフェースランタイムアプリケーションUIランタイムアプリケーションの形態の補助体験を提供することができる。下記でより詳細に説明するように、動的入力装置は、さまざまなキーまたは他の入力位置にさまざまな画像を表示するように構成可能である。UIランタイムアプリケーションは、さまざまなキーまたは他の入力位置に何の画像を表示するかを制御することができる。ユーザーが入力位置に表示された仮想ボタンを押すと、仮想ボタンから生じた入力メッセージは、システム全体のアクティブフォーカスを現在もっているアプリケーションとは別に処理するための、本明細書に開示したコンテナモジュールに送ることができる。いくつかの実施形態では、物理的なキー押下から生じた入力メッセージは、本明細書に開示したコンテナモジュールに任意選択で送ることができる。このようにして、補助体験すなわちUIランタイムアプリケーションは、システム全体のアクティブフォーカスをもつデスクトップアプリケーションと協働して、ユーザーに豊富なユーザー体験を提供することができる。0014図1は、ディスプレイモニター22、例えば、プロセッサー、ハードドライブなどを含むコンポーネント筐体24、および動的入力装置26を含む、例示的なコンピューターシステム20を示す。また、動的入力装置26は、さまざまな画像を表示することにより動的に適応することができるので、適応入力装置と呼ぶことができる。図2は、動的入力装置26およびその構造の中で使用することができる例示的なコンポーネントの補足図を提供する。さまざまな例で説明するように、動的入力装置26は、キーボードタイプの入力機能に加えて表示可能出力を提供するように実装可能である。とりわけ、コンピューター周辺装置は、キーの上に、および/またはキーを通して画像を見せることを容易にするキーを含むことができる。他の実施形態では、動的入力装置はキーを含まず、むしろタッチ起動を認識できる1つまたは複数の表示領域を含む場合がある。0015キー28図1および図2上のQ、W、E、R、T、Yなどによって示されたように、動的入力装置26が従来の英数字入力機能を提供するように構成されていることはしばしば望ましい。説明を簡単にするために、図1および図2の多くのキーは証印なしで示されるが、ラベルまたは画像はしばしば各キーに表示されることが理解されよう。さらに、QWERTYフォーミュレーションに加えて、またはその代わりに、キーボードのキー28は、他の機能を提供するために動的に変更することができる。キーは、例えば、さまざまな言語用およびアルファベット用の機能を提供するように、および/またはコンピューターシステム20を制御するための他の入力コマンドを起動するように割り付けることができる。いくつかの実装形態では、コンテキストに基づいて、例えば、コンピューターシステム20で動作するソフトウェアのいくつかの変化する動作コンテキストに応答して、キー機能は変わる場合がある。例えば、ALTキーを押下すると、普通は文字Fを入力して使用されるそのキーは、代わりにソフトウェアアプリケーションの中のファイルメニューの起動をもたらすことができる。一般に、本例におけるキーは選択的に押下されて、コンピューターを制御するための任意のタイプの入力信号を生成できることを理解すべきである。0016動的入力装置26は、多種多様の表示可能出力を提供してコンピューター体験を強化、およびその他の方法で増大させることができる。いくつかの例では、コンピューター周辺機器は、個別のキー28の上または近くに可視出力を表示してキー機能を示す。これは図1および図2で見ることができ、キーキャップ表面にペイントまたはプリントされた文字をもつキーの代わりに、表示メカニズム例えば、キーの下に位置する液晶表示LCD装置が使用されてキーのQ、Wなどの機能を示す。この動的およびプログラム可能な表示機能は、さまざまな異なる方法で動的入力装置26の潜在的な使用を容易にする。例えば、上述の英語ベースのキーボードは、従来のQWERTYフォーミュレーションの代わりにアルファベット順に文字を提供するようにマップすることができ、次いで、各キーの表示は簡単に変更されて、異なるキー割り付けを反映することができる場合もある。0017本明細書で考察された表示機能は、任意のタイプの可視出力をコンピューターシステム20のユーザーに提供するために使用することができ、アルファベット、文字、数字、符号などに限定されない。上記の例の代替として、画像は、空間感覚で個別のキーと必ずしも関連しない方式で表示することができる。画像は、例えば、複数のキーをスパンするキーボードの領域内に提示することができる。提供された画像はキーボードの入力機能と関連付ける必要はない。画像は、例えば、芸術目的で、ユーザー体験を個人のものにするために、または他のタイプの出力を提供するために、提供されることもある。当然、本開示は任意の目的の表示出力を包含する。また、キー28の上または近くに提供された表示に加えて、表示機能は他の領域の中に、例えば、キー28の上方に位置する領域32の中に提供することができる。さらに、領域32または動的入力装置26の他の部分には、キー28によって提供されたキーボードタイプの入力に加えて、タッチまたはジェスチャーベースの対話機能を提供することができる。例えば、領域32は、静電容量ベースの技術、抵抗ベースの技術、または他の適切な方法を介して、対話型のタッチスクリーンディスプレイとして実装することができる。さらに、いくつかの実施形態では、動的なコンピューター周辺機器は、押下可能なキーがないタッチ領域のみを含む場合がある。0018図2は動的入力装置26の限定的でない構成例を示す。提供された例は決して限定的ではなく、本開示は任意の動的入力装置と互換性があることが理解されよう。図示のように、動的入力装置26は、ディスプレイ装置40、およびディスプレイ装置の上に配置され、それと結合するキーボードアセンブリー42を含むことができる。キーボードアセンブリー42は、少なくとも部分的に透明であり、キーボードアセンブリーを通してユーザーがディスプレイ装置によって生成された画像を見ることが可能になる。一実施形態では、例えば、各キー28は中央に透明な部分をもち、それにより、ユーザーがキーボードアセンブリー42の下に位置するLCDパネルまたは他のディスプレイ装置によって生成された画像を見ることが可能になる。場合によっては、実質的にキーのすべてが透明になる。他の例では、例えば、キーキャップの上方および下方への移動を容易にする構造を隠すために、キーの周辺部が不透明な場合がある。いくつかの実施形態では、キーキャップは、その上に画像を背面投影することができる、両凸のスクリーンまたは他の光を拡散するスクリーンを含むことができる。0019さまざまなタイプのディスプレイ装置を採用してもよい。上記で簡単に示したように、適切なディスプレイ装置の1つのタイプはLCD装置である。しかしながら、キーボードアセンブリーは、投影ディスプレイおよびくさび投影ディスプレイを含むさまざまな他のディスプレイタイプと結合できることを理解すべきである。0020上記で紹介したように、キーボードおよび他のコンピューター周辺機器からの入力は、通常、システム全体のアクティブフォーカスを現在もっているアプリケーションに自動的に送られる。次いで、システム全体のアクティブフォーカスを現在もっているアプリケーションは、こうして受信した入力を直接処理する。多くの場合、そのようなフレームワークは予測可能なコンピューター体験をユーザーに提供する。しかしながら、いくつかのシナリオでは、システム全体のアクティブフォーカスを現在もっているアプリケーション以外の何かが、キーボードおよび他のコンピューター周辺機器からの入力を処理することが望ましい場合がある。例えば、動的入力装置のコンテキストでは、UIランタイムアプリケーションの形態の補助体験が動的入力装置からの入力を受信し、そのような入力の一部または全部を処理することが望ましい場合がある。そのようなパラダイムにより、UIランタイムアプリケーションが、動的入力装置によって表示された画像を制御することが可能になる。また、そのようなパラダイムにより、UIランタイムアプリケーションが、動的入力装置上のキーまたは他の入力領域を起動することの根本的な影響を制御することが可能になる。0021UIランタイムアプリケーションで入力と出力の制御を集中化することにより、デスクトップアプリケーションおよび他のプログラムが、すべての装置の入力および装置の表示出力を処理するように設計されなくても、動的入力装置を使用することが可能になる。言い換えれば、標準キーボードとともに使用するために書かれたデスクトップアプリケーションは、動的入力装置とともに使用することができ、UIランタイムアプリケーションの形態の補助体験は、動的入力装置とデスクトップアプリケーションの間で機能的に動作するように使用することができる。UIランタイムアプリケーションは、動的入力装置によって何の画像が表示されるか、およびどの画像が表示されるかに応じてユーザーの起動がどのように解釈されるかを制御することができる。このタイプの制御を可能にするために、UIランタイムアプリケーションは、システム全体のアクティブフォーカスをもつアプリケーションの代わりに、少なくともいくつかの入力メッセージを処理することが許される。0022そのような柔軟性を提供するために、UIランタイムアプリケーションは、システム全体のアクティブフォーカスの規則に準拠する従来のデスクトップアプリケーションではあり得ない。下記でより詳細に説明するように、代わりにUIランタイムアプリケーションは、デスクトップアプリケーションに対する補助体験としてウィンドウのないランタイム環境内で動作することができる。0023図3は、タッチ入力、キーボード入力、および/または他のタイプの入力を、システム全体のアクティブフォーカスをもつアプリケーション以外のアプリケーションに配信することができる、コンピューターシステム50の実施形態の例を概略的に示す。具体的には、図3は、上記で紹介したように、入力メッセージをUIランタイムアプリケーションに配信する動的入力装置を含むコンピューターシステムを示す。0024コンピューターシステム50は、キーボードの形態の直接入力装置52を任意選択で含むことができる。また、コンピューターシステム50は、さまざまな画像を表示できる、複数のキー56を含む適応キーボードの形態の動的入力装置54を含む。また、動的入力装置54はキーなしのタッチ領域58を含む。タッチ領域は、ユーザーが起動できる1つまたは複数の仮想ボタンまたは他の仮想制御を表示するために使用することができる。この例では示されていないが、動的入力装置はキーとタッチ領域の異なる構成または組合せを含む場合があり、いくつかの動的入力装置は、タッチ領域なしのキー、またはキーなしのタッチ領域を含む場合がある。0025動的入力装置は、複数の入力画像をユーザーに動的に表示し、複数の入力画像の任意の特定の1つに向けられたユーザー入力に応答するように構成可能である。一例として、さまざまな入力画像を複数のキー56で表示することができ、動的入力装置54は、特定のキーに向けられたユーザー入力に応答する特定のキーの指示を含む、動的入力メッセージを出力することができる。別の例として、さまざまな入力画像をタッチ領域58のさまざまな位置に仮想制御として表示することができ、動的入力装置54は、特定の仮想制御に向けられたユーザー入力に応答する特定の仮想制御の指示を含む、動的入力メッセージを出力することができる。0026コンピューターシステム50は、1つまたは複数のネイティブアプリケーションを実行するためのオペレーティングシステム60を含むことができる。オペレーティングシステム60は、実行されたアプリケーション間のリソースの共有および割当てを管理し調整することができる。また、オペレーティングシステム60は、コンピューターシステム50の少なくともいくつかのI/O機能を制御することができる。少なくともいくつかのフレームワークでは、オペレーティングシステム60は、現在実行されている1つまたは複数のネイティブアプリケーションのうちのただ1つが、システム全体のアクティブフォーカスをもつことが可能になるように構成されている。そのようなフレームワークでは、オペレーティングシステム60は、1つまたは複数の直接入力装置からのすべての直接入力メッセージを、システム全体のアクティブフォーカスをもつネイティブアプリケーションに向ける。オペレーティングシステムの限定的でない例には、MICROSOFT登録商標WINDOWS登録商標、APPLE登録商標MACOS登録商標、およびLINUX登録商標が含まれる。0027いくつかの実施形態では、オペレーティングシステムは、キーボードメッセージ例えば、キーボードのキーが押された結果として生じたメッセージを、システム全体のアクティブフォーカスをもつアプリケーションに送ることができる。そのような場合、オペレーティングシステムのフックは、キーボードメッセージを垣間見るために使用することができる。また、これらのメッセージは、UIランタイムアプリケーションに送信することができ、したがって、UIランタイムアプリケーションが何のキーボードメッセージを見たかに基づいて応答することを可能にする。一方、タッチ入力メッセージ例えば、タッチ領域58へのユーザータッチの結果として生じたメッセージは、ランタイム環境に直接送られ、UIランタイムアプリケーションが理解できるメッセージに変換することができる。タッチ入力メッセージは、システム全体のアクティブフォーカスをもつアプリケーションに送らずに、ランタイム環境に送ることができる。0028動的入力装置は、オペレーティングシステムに、動的入力装置を列挙させず、動的入力装置を標準のディスプレイモニターおよび/またはキーボードとして扱わせない、インターフェースを含むことができる。しかしながら、いくつかの実施形態では、オペレーティングシステムは、動的入力装置のキーを標準キーボードとして列挙するが、動的入力装置上のタッチをメインディスプレイモニター上のタッチと解釈されるのを防ぐために、タッチ領域を標準デジタイザとして列挙しない場合がある。下記でより詳細に説明するように、コンテナモジュール62、仮想ランタイム環境64、およびUIランタイムアプリケーション66は、他のソフトウェアが入力例えば、タッチ入力、キー押下などを動的入力装置から受信し、画像出力を動的入力装置に送信するためにコールできる関数を提供することができる。0029コンピューターシステム50はコンテナモジュール62を含む。コンテナモジュールは、1つまたは複数の異なる制御が走ることができる環境を供給することができる。限定的でない例として、コンテナモジュール62は、MICROSOFT登録商標ACTIVEX登録商標制御が走ることができる環境を供給するように構成された、MICROSOFT登録商標ACTIVEX登録商標コンテナであり得る。コンテナモジュール62は、コンテナモジュールによって提供されたすべての制御へのサービスを操作、管理、および提供することができる。例えば、コンテナモジュール62は、制御にイベントハンドラーを供給することができる。いくつかの実施形態では、コンテナモジュールは、デスクトップアプリケーションの一部として実装することができる。0030コンテナモジュール62は、現在アクティブなデスクトップのコンテキストで動作しているランタイム環境64の形態の制御を提供するように構成可能である。本開示は任意の数のさまざまな適切なランタイム環境と互換性があるが、MICROSOFT登録商標SILVERLIGHT商標ランタイム環境が、本明細書において限定的でない例として提供される。この例を使用して、MICROSOFT登録商標ACTIVEX登録商標コンテナの形態のコンテナモジュール62は、MICROSOFT登録商標SILVERLIGHT商標プラグインの形態のランタイム環境を提供することができる。しかしながら、他のコンテナモジュールおよび/またはランタイム環境は、本開示の範囲から逸脱することなく使用できることを理解されたい。限定的でない例として、ランタイム環境はAdobe登録商標Flash登録商標ランタイム環境として実装することができる。0031いくつかの実施形態では、ランタイム環境64は、現在アクティブなデスクトップのコンテキストで動作しているウィンドウのないランタイム環境であり得る。言い換えれば、ランタイム環境64は、ほとんどのネイティブデスクトップアプリケーションおよび他のランタイム環境によって実行されるので、専用GUIレンダリングウィンドウをインスタンス化することはない。0032いくつかの実施形態では、コンテナモジュールおよびウィンドウのないランタイム環境は、開発者が他の目的でアプリケーションを開発するために使用するのと同じフレームワークを利用することができる。一例として、ウィンドウのないランタイム環境はネイティブブラウザーアプリケーションと互換性があり得る。そのため、ネイティブブラウザーアプリケーションとの互換用に開発されたアプリケーションは、コンテナモジュールおよびウィンドウのないランタイム環境と互換性がある。言い換えれば、開発者がネイティブブラウザーアプリケーション用のアプリケーションを開発するために使用するところの同じツールおよび規約を使用して、開発者はウィンドウのないランタイム環境用のアプリケーションを開発することができる。そのため、ウィンドウのないランタイム環境向けの開発は比較的容易である。上記からの例を使用して、MICROSOFT登録商標SILVERLIGHT商標アプリケーションの開発に精通しているいかなる開発者も、動的入力装置とともに使用するアプリケーションを開発することができる。異なる例として、ランタイム環境がAdobe登録商標Flash登録商標ランタイム環境として実装された場合、Adobe登録商標Flash登録商標アプリケーションの開発に精通しているいかなる開発者も、動的入力装置とともに使用するアプリケーションを開発することができる。0033コンピューターシステム50は、さらに、ウィンドウのないランタイム環境内で実行される、1つまたは複数の入力装置ユーザーインターフェースランタイムアプリケーション例えば、UIランタイムアプリケーション66を含む。そのようなシナリオでは、コンテナモジュール62の外部で実行される異なるアプリケーション例えば、デスクトップアプリケーション68は、システム全体のアクティブフォーカスをもつことができる。そのため、デスクトップアプリケーション68は、直接入力装置52からの入力、および/または標準直接入力装置として列挙された動的入力装置の一部例えば、いくつかの実施形態における動的キーボードのキーからの入力などの、従来の入力を受信する。しかしながら、UIランタイムアプリケーション66は、動的入力装置54から動的入力メッセージを受信するように構成可能である。端的に言えば、たとえ、デスクトップアプリケーション68が1つまたは複数の直接入力装置からすべての直接入力メッセージを受信しても、UIランタイムアプリケーションは、動的入力装置から少なくともいくつかの入力を受信する。0034デスクトップアプリケーションまたは他の支配的アプリケーションは、動的入力装置上の表示可能出力を制御することができる1つもしくは複数の補助体験を、登録および/または指定することができる。そのような補助体験は、例えば、ウィンドウのないランタイム環境内で動作しているUIランタイムアプリケーションの形態を取ることができる。1つの限定的でない例として、補助体験は、1つまたは複数のMICROSOFT登録商標SILVERLIGHT商標のXAPファイルとしてカプセル化することができる。これらの補助体験は、クライアントアプリケーションプログラミングインターフェースAPIを介して登録することができる。00351つまたは複数の体験は、支配的アプリケーション毎に登録することができ、支配的アプリケーションは、支配的アプリケーションの現在のコンテキストに基づいて登録された体験のどれがアクティブかを動的に指定することができる。各XAPファイルまたは補助体験の他の実装形態は、支配的アプリケーションの特定のコンテキストに関連付けることができる。いくつかの実装形態では、そのようなコンテキストは、支配的アプリケーションを介して実行できるさまざまなユーザータスク例えば、新しいEメールの作成、連絡先の検索、新しい会議のスケジューリング、仕事のレビューなどに対応することができる。現在アクティブなコンテキストまたはタスクの実行においてユーザーを支援するように調整された、画像、仮想制御、および更新されたキーで動的入力装置を動的に更新することにより、各コンテキスト、またはタスクを容易にすることができる。特定のコンテキストに対応する補助体験は、動的入力装置上に仮想制御の第1の組を動的に表示し、仮想制御の第1の組の起動を支配的アプリケーションに伝えるように構成可能である。0036クライアントAPIは、支配的アプリケーションにチャネルを提供して、補助体験との間でメッセージを送受信するように構成可能である。限定的でない例として、アプリケーションプログラミングインターフェースは、支配的アプリケーションの現在のコンテキストに基づいて支配的アプリケーションが補助体験を指定するためのコール、および補助体験を介して表示された仮想制御の起動を指定された補助体験が支配的アプリケーションに返信するためのコールを含むことができる。0037いくつかの実施形態では、オペレーティングシステムは、システム全体のアクティブフォーカスをもつアプリケーションに直接入力および動的入力を送るように構成可能である。例えば、オペレーティングシステムは、デスクトップアプリケーションに直接入力および動的入力を送ることができる。そのような実施形態では、デスクトップアプリケーションは、特定の入力が動的か直接かを判定するように構成されていてもよい。動的であると判定された入力は、処理するためにUIランタイムアプリケーション66に送ることができる。そのような実施形態では、デスクトップアプリケーションとUIランタイムアプリケーションは、任意の適切なメッセージ伝達方法例えば、メッセージ伝達APIを介して協働し情報を共有するように構成されていてもよい。0038他の実施形態では、オペレーティングシステムは、特定の入力が動的か直接かを判定するように構成可能である。そのような実施形態では、動的入力はUIランタイムアプリケーションに送られるが、オペレーティングシステムは、直接入力をシステム全体のアクティブフォーカスをもつアプリケーションに送るように構成されていてもよい。0039アクセス制御層ACLは、登録されたアプリケーションの中に挿入されたフックからの入力、ならびにオペレーティングシステムにアクセス可能なシステムからの入力を使用して、動的入力装置上で最終的にレンダリングされた体験が何になるべきかについて決定することができる。0040一実装形態では、ACLはオペレーティングシステム内でのすべてのフォーカスの変化を見守り、その結果ACLはどのアプリケーションがフォーカスをもっているかを知っている。各フォーカスの変化について、ACLは、フォーカスを失ったアプリケーションに関連するいかなる補助体験も削除することができる。次に、ACLは、フォーカスを取得するアプリケーションが任意の登録された補助体験をもつかどうかを調査することができる。フォーカスを取得するアプリケーションが登録された補助体験をもつ場合、現在アクティブな補助体験がロードされ、初期化され、レンダリングの準備をされる。フォーカスを取得するアプリケーションが登録された補助体験をもたない場合、ACLはデフォルトの補助体験をロードし、初期化し、準備することができる。適正な補助体験は、識別され準備されると、システムによって提供された任意のデフォルトの体験例えば、キーボードのキー上に表示された標準キーボードの画像と任意選択で合成される。0041上記で紹介したように、いくつかの実施形態では、レンダリングシステムは、個別に提供されたMICROSOFT登録商標SILVERLIGHT商標制御であり得る。しかしながら、代替のランタイム環境は、本開示の範囲から逸脱することなく、レンダリングシステムを提供することができる。この例では、MICROSOFT登録商標SILVERLIGHT商標制御の中のアクティブなコンテンツは、ACLおよび/またはサポートする制御モジュールによって管理することができる。MICROSOFT登録商標SILVERLIGHT商標などのウィンドウのないランタイム制御は、動的入力装置用の唯一のレンダラとして使用することができる。この例を使用すると、ウィンドウのないランタイム制御は、独立したフォーカスシステムをもつ提供可能なXAMLレンダラである。独立したフォーカスシステムにより、オペレーティングシステムのフォーカス状態に影響することなく、適切な制御フィードバックが補助体験の中で示されることが可能になる。0042マウスメッセージは、動的入力装置から受信された生のタッチデータに基づいて、ウィンドウのないランタイム制御に挿入可能であり、したがって動的入力装置からのタッチ入力が補助体験と直接相互作用することが可能になる。QWERTYマネージャーは、何のキーがキーボード上で押下されているかについての補助体験の通知を与えるために使用することができる。このQWERTYマネージャーは、デフォルトのQWERTYXAMLレイアウトとともに、動的入力装置上のキートップ毎に動的で適切なレンダリングを提供する。このQWERTYマネージャーは、オペレーティングシステムから独立して、すべてのキーストロークレポートを監視するメカニズムを提供する。さらに、QWERTYマネージャーは、ランタイム環境の中でデフォルトのサポートをもつことができないキー押下を含む、すべてのキー押下を伝えるように構成されている。0043UIランタイムアプリケーション66は、装置メッセージから導出されたシステムメッセージをシステム全体のアクティブフォーカスをもつアプリケーションに出力するように構成可能である。これは、デスクトップアプリケーションとUIランタイムアプリケーションとの間の通信チャネルを介して達成することができる。システムメッセージにより、システム全体のアクティブフォーカスをもつアプリケーションが動的入力装置を介してユーザー入力に応答することが可能になる。UIランタイムアプリケーション66は、仮想の制御またはキーに表示された画像によって示され得る仮想の制御またはキーの変更可能な機能を考慮して、ユーザーが起動した仮想の制御またはキーに対応するシステムメッセージをシステム全体のアクティブフォーカスをもつアプリケーションに送信することができる。このようにして、動的入力装置54は、システム全体のアクティブフォーカスをもつアプリケーションを制御するために使用することができる。さらに、任意の特定のキーまたは任意の特定の仮想制御の起動に関連する機能は動的に変更することができ、システム全体のアクティブフォーカスをもつアプリケーションは、特定のキーまたは仮想制御の現在の機能に従って、UIランタイムアプリケーション66を介して変換された入力を受信することができる。0044上記に提供した例を使用して、MICROSOFT登録商標ACTIVEX登録商標コンテナが動的入力装置54からタッチ入力情報を受信すると、MICROSOFT登録商標ACTIVEX登録商標コンテナは、この情報をMICROSOFT登録商標WINDOWS登録商標のマウスメッセージのような情報に変換し、MICROSOFT登録商標SILVERLIGHT商標プラグイン、この場合IOlelnPlaceObjectWindowless::OnWindowMessage...に入力を挿入するための方法をコールする。0045上述したように、UIランタイムアプリケーション66は、さらに、表示出力メッセージを動的入力装置54に出力するように構成可能である。表示出力メッセージは、動的入力装置によって表示される1つまたは複数の画像を指定するために使用することができる。そのような画像は、特定のキーまたは仮想制御と動的に関連付けられた機能をユーザーに知らせる仮想キューとして使用することができる。上述したように、UIランタイムアプリケーション66は、ユーザー入力が向けられ検出された位置例えば、キーまたは仮想制御に表示された画像に対応するシステムメッセージを出力することができる。0046上記に提供した例を使用して、マウスメッセージの処理において、MICROSOFT登録商標SILVERLIGHT商標プラグインは、動的入力装置の外観を変更することができる。プラグインは、例えば、IOlelnPlaceSiteWindowless::InvalidateRect...を介して、汚れた矩形すなわち、変更されたピクセルの集合をコンテナモジュール62に知らせることができる。0047コンテナモジュール62は、汚れた矩形を使用して、例えば、IViewObject::Draw...を介して無効な領域をビットマップに描くようにプラグインに要求することができる。次いで、コンテナモジュール62は、汚れた矩形およびビットマップからのビットを使用して、適切なコールを介して動的入力装置の無効な部分だけを新しい画像データで更新することができる。0048ランタイム環境64は、入力モジュール70および/または出力モジュール72を任意選択で含むことができる。含まれると、入力モジュール70および出力モジュール72は、動的入力装置54とコンピューターシステム50の間の通信を処理するために使用することができる。いくつかの実施形態では、UIランタイムアプリケーション66、コンテナモジュール62、および/またはオペレーティングシステム60は、動的入力装置54とコンピューターシステム50の間の通信を処理するために使用することができる。いくつかの実施形態では、システム全体のアクティブフォーカスをもつことができる、デスクトップアプリケーションおよび/または他のアプリケーションもしくはモジュールは、動的入力装置54とコンピューターシステム50の間の通信処理を支援するように構成可能である。本明細書で紹介したAPIは、そのような通信を容易にするために使用することができる。0049コンピューターシステム50は、セキュリティ通信モジュール74を任意選択で含むことができる。セキュリティ通信モジュールは、UIランタイムアプリケーション66、ランタイム環境64、および/またはコンテナモジュール62と他の態様のコンピューターシステムとの間のセキュアな通信を容易にするために使用することができる。1つの限定的でない例として、UIランタイムアプリケーション66、ランタイム環境64、および/またはコンテナモジュール62は、すべてのメッセージを検証するために使用できる署名入りデジタル証明書をもつことができ、その結果、他の態様のコンピューターシステムは証明書を検証して、メッセージが信頼されたソースから来たことを保証することができる。0050また、コンピューターシステム50は、さまざまなシステムコンポーネントがメッセージの通信を含むシステム機能にアクセスするために使用できる、1つまたは複数のシステムAPI76を含むことができる。図3には示していないが、いくつかの実施形態では、動的入力装置はAPI76を利用することができる。0051図3に戻ると、いくつかの実施形態では、コンピューターシステム50は論理サブシステム78およびデータ保持サブシステム80を含む。論理サブシステム78は、1つまたは複数の命令を実行するように構成された、1つまたは複数の物理的装置を含むことができる。例えば、論理サブシステムは、1つまたは複数のプログラム、ルーチン、オブジェクト、コンポーネント、データ構造、または他の論理的構造物の一部である、1つまたは複数の命令を実行するように構成されていてもよい。そのような命令は、タスクを実行し、データタイプを実装し、1つまたは複数の装置の状態を変換し、またはその他の方法で所望の結果に到達するように構成可能である。論理サブシステムは、ソフトウェア命令を実行するように構成された、1つまたは複数のプロセッサーを含むことができる。さらに、または一方、論理サブシステムは、ハードウェアまたはファームウェアの命令を実行するように構成された、1つまたは複数のハードウェアまたはファームウェアの論理マシンを含むことができる。論理サブシステムは、いくつかの実施形態では離れて置くことができる、2つ以上の装置全体にわたって分散された個別のコンポーネントを任意選択で含むことができる。0052データ保持サブシステム80は、データ、および/または論理サブシステムによって実行可能な命令を保持し、本明細書に記載した方法および処理を実施するように構成された、1つまたは複数の物理的な持続性のある装置を含むことができる。限定的でない例として、データ保持サブシステム80は、オペレーティングシステム60、コンテナモジュール62、ランタイム環境64、UIランタイムアプリケーション66、およびデスクトップアプリケーション68を実行するために使用される命令を保持するために使用することができる。そのような方法および処理が実施されると、データ保持サブシステム80の状態は、例えば、さまざまなデータを保持するように変わることができる。データ保持サブシステム80は、取り外し可能な媒体および/または内蔵の装置を含むことができる。データ保持サブシステム80は、とりわけ、光学式メモリ装置、半導体メモリ装置、および/または磁気式メモリ装置を含むことができる。データ保持サブシステム80は、以下の特性のうちの1つまたは複数をもつ装置を含むことができる。揮発性、不揮発性、動的、静的、リード/ライト、リードオンリー、ランダムアクセス、シーケンシャルアクセス、ロケーションアドレス指定可能、ファイルアドレス指定可能、およびコンテンツアドレス指定可能。いくつかの実施形態では、論理サブシステム78とデータ保持サブシステム80は、特定用途向け集積回路またはシステムオンチップなどの1つまたは複数の共通の装置に統合することができる。0053用語モジュールおよびエンジンは、1つまたは複数の特定の機能を実行するために実装された、コンピューターシステム50の一態様を説明するために使用することができる。場合によっては、そのようなモジュールまたはエンジンは、データ保持サブシステム80によって保持された命令を実行する論理サブシステム78を介してインスタンス化可能である。さまざまなモジュールおよび/またはエンジンが、同じアプリケーション、コードブロック、オブジェクト、ルーチン、および/または関数からインスタンス化可能であることを理解すべきである。同様に、場合によっては、同じモジュールおよび/またはエンジンが、さまざまなアプリケーション、コードブロック、オブジェクト、ルーチン、および/または関数によってインスタンス化される場合もある。0054上述したように、デスクトップアプリケーションと補助体験例えば、UIランタイムアプリケーションは、協働して豊富で双方向の入力体験をユーザーに提供することができる。さまざまな異なるアーキテクチャーおよびプロトコルは、図3を参照して説明したパラダイムを実装するために使用することができる。図4および図5は、アーキテクチャーの2つの異なる例を示す。0055図4および図5のアーキテクチャーの例では、動的入力装置はラスター化装置として処理される。したがって、ソフトウェアスタックは動的入力装置の中の精巧なGPUをサポートする必要がなく、むしろすべての精巧な合成およびレンダリングはホストコンピューター装置において完成することができる。そのため、ラスター画像ビットマップだけが動的入力装置に渡される。動的入力装置が単純なラスター化装置ではなく、むしろより強力なCPUおよび/またはGPUをもつ装置である実施形態では、アーキテクチャーは、ランタイム環境が動的入力装置自体に提供されるように拡張することができる。0056装置の抽象化は、動的入力装置のすべての適応可能な特徴を列挙する例えば、動的入力装置がキーボードを含むか、動的入力装置がタッチセンサーを含むか、タッチセンサーのサイズはいくつか、などために使用することができる。また、装置の抽象化は、動的入力装置においてレンダリングされたものを制御するために使用することができる。また、装置の抽象化インターフェースを使用して、ウィンドウのないランタイム制御から完全にレンダリングされたビットマップを取得し、完全にレンダリングされたビットマップを動的入力装置に送ることで表示することができる。また、装置の抽象化インターフェースは、タッチデータならびに動的入力装置との任意の他のユーザー相互作用を伝える便宜を動的入力装置に与える。このタッチデータおよび他の情報を、ウィンドウのないランタイム制御で現在動作している可視ツリーの中で表現するために送り返すことができる。抽象化はバス例えば、USB、イーサネット登録商標など不可知論的である。0057図4は、2つ以上のさまざまな支配的アプリケーションによって指定された入力装置ユーザーインターフェースランタイムアプリケーションを実行するように構成された、共有のウィンドウのないランタイム環境92を使用するアーキテクチャー90の例を示す。特に、アーキテクチャーの例は、アクセス制御層ACL94をもつ単一のMICROSOFT登録商標SILVERLIGHT商標制御を使用し、アクセス制御層ACL94は、その単一のMICROSOFT登録商標SILVERLIGHT商標制御をもつすべてのアプリケーションから登録されたすべてのコンテンツを管理するように構成されている。上述したように、異なるランタイム環境は本開示の範囲から逸脱することなく使用することができる。このアーキテクチャーは単一の制御を使用し、したがってデータが横切るプロセス境界のインスタンスを少ししか使用しない。しかしながら、任意の登録された補助体験の中の任意の誤ったコードは、すべての他の体験に影響する可能性がある。0058図5は、支配的アプリケーション100によって提供され、その支配的アプリケーションのみによって指定された入力装置ユーザーインターフェースランタイムアプリケーションを実行するように構成された、ローカルのウィンドウのないランタイム98環境を使用するアーキテクチャー96の例を示す。具体的には、MICROSOFT登録商標SILVERLIGHT商標制御は、補助体験を登録/起動する各支配的アプリケーションのプロセス内部に作成される。別のMICROSOFT登録商標SILVERLIGHT商標制御102は、アクセス制御層104の規則によって制御された最終合成に使用される別のランタイムの中で作成される。フォーカス変更の追跡に加えて、ACLは、各関連するアプリケーション/体験からの現在のビットマップを追跡するように強化される。このアーキテクチャーはすべてのアプリケーション体験を別々に保持し、所与の体験の中の不良コードのみが、不良コードを供給するアプリケーションに影響する。さらに、任意のセキュリティ問題もアプリケーション自体の中に含まれる。また、このアーキテクチャーにより、支配的アプリケーションと関連する提供された体験との間のより高い忠実度の通信チャネルが可能になり得え、それは、支配的アプリケーションと体験はどちらも同じプロセスの中にあるからである。このアーキテクチャーは、プロセス横断のデータ共有のためにより高い帯域幅を使用することができる。0059図4および図5に示し、上述したアーキテクチャーの例は限定的なものではない。本開示の範囲から逸脱することなく、他のアーキテクチャーを使用することができる。0060図6は、動的入力装置112を介してユーザー入力が実行されるシーケンス110をいくらか概略的に示し、動的入力装置112は、ディスプレイ114を使用するコンピューター装置例えば、図3のコンピューターシステム50、図示せずに対する周辺機器として働く。図示された例では、Eメールアプリケーション116が現在コンピューター装置のシステム全体のアクティブフォーカスをもち、Eメールアプリケーションは、UIランタイムアプリケーションの形態の補助体験と協働している。シーケンス110は、コンピューター装置が動的入力装置112とディスプレイ114のどちらにもグラフィックスを提示することが可能になる、上述のシステムおよび方法の実装形態の例を実証する。図示されたシーケンス110は、時刻t1から時刻t4まで経時的に進行するタイムラインによって描写される。0061t1で、動的入力装置112上でキー入力を実行するユーザーにより、入力シーケンスが開始される。図示された例では、キー入力は、ユーザーがtキーを押下し、次いでrキーを押下する、キーダウン入力である。動的入力装置112は、各キーに画像例えば、tキーにtの画像、rキーにrの画像を表示できることに留意されたい。しかしながら、理解を簡単にするために、図6は、この例に関連したそれらのキーの上のキー画像のみを示す。0062動的入力装置の中に含まれた入力検知サブシステムは、上述したように、キー入力を検出し、キー入力信号をコンピューター装置に送信する。任意の適切なタイプのメッセージおよび/または符号化は、キー入力を伝えるために使用することができる。コンピューター装置は、上述したように入力信号を処理することができる。0063次いで、ディスプレイはコンピューター装置から信号を受信し、ディスプレイ上に提示されたアクティブなコンテンツを変更することができる。この例では、対応するキーが起動されると、キーに対応する文字がテキストボックス118の中に表示される。また、Eメールアプリケーションは、入力を分析し、ユーザーがEメールしようと試みているコンテンツを予測することができる。0064t2で、動的入力装置はコンピューター装置から信号を受信し、複数の仮想ボタンすなわち、連絡先制御ボタン120a、連絡先制御ボタン120b、連絡先制御ボタン120cを動的入力装置のタッチディスプレイ121上に提示する。Eメールアプリケーションが判定した連絡先に対応する仮想ボタンは、Eメールの最も有望な受信者である。仮想ボタンは、ユーザーがタッチして起動できるタッチスクリーンに対する制御として機能し得ることが理解されよう。仮想ボタンは、Eメールアプリケーションに補助体験を提供しているUIランタイムアプリケーションを介して動的入力装置に供給することができる。上述したように、UIランタイムアプリケーションはウィンドウのない制御であり得る。0065t3で、ユーザーは、動的入力装置によって表示された仮想ボタンのうちの1つすなわち、連絡先制御ボタン120aに向けてタッチ入力を実行する。検知サブシステムはタッチ入力を検出し、コンピューター装置にメッセージを送信する。上述したように、たとえ、Eメールアプリケーションがシステム全体のアクティブフォーカスをもっていても、このメッセージはUIランタイムアプリケーションによって処理することができる。メッセージを受信すると、UIランタイムアプリケーションは、Eメールアプリケーションと通信することができ、ユーザーが連絡先制御ボタン120aに対応する連絡先を選択したことを示す。0066t4で、タッチ入力に応答して、かつUIランタイムアプリケーションから通信を受信すると、Eメールアプリケーションは、連絡先制御ボタン120aに対応する連絡先のEメールアドレス122を自動的に書き込んで表示する。0067上記の例によって理解できるように、本明細書に記載したシステムおよび方法により、動的入力装置が、ユーザーが起動することができる仮想制御および/または動的キーの形態で、情報をユーザーに表示することが可能になる。さらに、本明細書に記載したシステムおよび方法により、仮想制御、およびいくつかの実施形態では動的キーの起動が、システム全体のアクティブフォーカスの通常の制約なしに機能することが可能になる。0068図7は、ウィンドウのないランタイム環境を使用して動的入力装置からの入力を管理する方法130の例を示す。132で、方法130は、ウィンドウのないランタイム環境を含む1つまたは複数のランタイム環境を、提供することを含む。134で、方法130は、ウィンドウのないランタイム環境の外部で実行される別のアプリケーションがシステム全体のアクティブフォーカスをもつが、動的入力装置から動的入力メッセージを受信することを含む。0069図8は、支配的アプリケーションが動的入力装置を用いて補助体験を実施するための方法140の例を示す。142で、方法140は、支配的アプリケーションの第1のコンテキストを判定することを含む。例えば、支配的アプリケーションは、支配的アプリケーションが特定のコンテキスト例えば、新しいEメールの作成、連絡先の検索、新しい会議のスケジューリング、仕事のレビューなどにいることを自己判定することができる。アプリケーションはさまざまな異なるコンテキストをもつことができ、それらの各々は異なる補助体験に対応することができる。0070144で、方法140は第1の補助体験を指定することを含む。指定された補助体験は支配的アプリケーションとは別個であり、支配的アプリケーションの第1のコンテキストに対応する。上述したように、指定された補助体験は、動的入力装置上に仮想制御の第1の組を動的に表示するように、かつ仮想制御の第1の組の起動を支配的アプリケーションに伝えるように構成可能である。0071146で、方法140は、支配的アプリケーションの第1のコンテキストとは異なる、支配的アプリケーションの第2のコンテキストを判定することを含む。例えば、支配的アプリケーションは、支配的アプリケーションが第1のコンテキストから第2のコンテキストに変化した例えば、Eメールを作成するコンテキストから予定をスケジュールするコンテキストに変化したことを自己判定することができる。さまざまなコンテキストは、動的入力装置を介して表示されるべきさまざまな補助体験に対応することができる。0072148で、方法140は、支配的アプリケーションとは別個の、かつ第1の補助体験とは異なる、第2の補助体験を指定することを含む。第2の補助体験は支配的アプリケーションの第2のコンテキストに対応し、動的入力装置上に仮想制御の第2の組を動的に表示するように、かつ仮想制御の第2の組の起動を支配的アプリケーションに伝えるように構成可能である。0073本明細書に記載した構成および/または手法が、性質上、例示的であること、および、多数の変形形態が実現可能であるので、これらの特定の実施形態または例が限定的な意味で考察されるものではないことを理解されたい。本明細書に記載した特定のルーチンまたは方法は、任意の数の処理戦略のうちの1つまたは複数を表すことができる。そのため、図示されたさまざまな動作は、図示された順序で、他の順序で、並行して実行することもでき、または場合によっては省略することもできる。同様に、上記の処理の順序は変更することができる。0074本開示の主題は、本明細書において開示した、さまざまな処理、システムおよび構成、ならびに他の特徴、機能、動作、および/または性状のうちの、すべての新規で明白でない組合せおよび部分的組合せ、ならびにありとあらゆるそれらの均等物を含む。