(57)【要約】  本発明は、ソフトウェアアプリケーションへの入力のマッピングを可能とする。本発明は、１以上のプロセッサが、（ｉ）入力装置を介して生成可能な入力イベントの第１セットを、前記ソフトウェアアプリケーションによって認識される入力イベントの第２セットと関連付けるキーマップを受信し、（ｉｉ）入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、（ｉｉｉ）前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、（ｉｖ）前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、（ｖ）前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する。【選択図】図３
2021528763.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションに入力をマッピングする方法であって、
１以上のプロセッサが、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを、前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ステップを実行する方法。
【請求項２】
前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する、
請求項１に記載の方法。
【請求項３】
前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかである、
請求項２に記載の方法。
【請求項４】
（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、
または、
（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる、
請求項１に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識される、
請求項１に記載の方法。
【請求項６】
前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される、
請求項５に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、
前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、
前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットと、
を生成する
ステップをさらに具備し、
前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す、
請求項１に記載の方法。
【請求項８】
前記グラフィックオブジェクトの第２セットは、
前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または
前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現、
である、請求項７に記載の方法。
【請求項９】
前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、
前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、
前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている、
請求項８に記載の方法。
【請求項１０】
前記受信したキーマップは、複数のキーマップから選択され、
前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、
前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである、
請求項１に記載の方法。
【請求項１１】
前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである、
請求項１０に記載の方法。
【請求項１２】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、
前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識され、
前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、
前記データ、前記要求、または前記命令は、
前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、
前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、
前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、
前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、
前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、
ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、
のいずれかにおいて、または、いずれかから受信される、
請求項１０に記載の方法。
【請求項１３】
ソフトウェアアプリケーションに入力をマッピングするためのシステムであって、
当該システムは、プロセッサによって実行されるコンピューティングシステムを具備し、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ように前記コンピューティングシステムが構成されている、システム。
【請求項１４】
前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する、
請求項１２に記載のシステム。
【請求項１５】
前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかである、
請求項１４に記載のシステム。
【請求項１６】
（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、
または、
（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる、
請求項１３に記載のシステム。
【請求項１７】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識される、
請求項１３に記載のシステム。
【請求項１８】
前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される、
請求項１７に記載のシステム。
【請求項１９】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、
前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、
前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットと、
を生成し、
前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す、
請求項１３に記載のシステム。
【請求項２０】
前記グラフィックオブジェクトの第２セットは、
前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または
前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現、
である、請求項１９に記載のシステム。
【請求項２１】
前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、
前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、
前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている、
請求項２０に記載のシステム。
【請求項２２】
前記受信したキーマップは、複数のキーマップから選択され、
前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、
前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである、
請求項１２に記載のシステム。
【請求項２３】
前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである、
請求項２２に記載のシステム。
【請求項２４】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、
前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識され、
前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、
前記データ、前記要求、または前記命令は、
前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、
前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、
前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、
前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、
前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、
ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、
のいずれかにおいて、または、いずれかから受信される、
請求項２２に記載のシステム。
【請求項２５】
ソフトウェアアプリケーションに入力をマッピングするコンピュータプログラム製品であって、
コンピュータプログラム製品は、コンピュータ読み取り可能なコードが組み込まれた非一過性のコンピュータが使用可能な媒体であり、コンピュータ読み取り可能なコードは、プロセッサにおいて、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ステップを実行するための命令である、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力マッピングに関する。より具体的には、本発明は、ソフトウェアアプリケーションが実行されているコンピューティングシステムまたはコンピューティング装置に通信可能に接続された１以上の制御部またはユーザインタフェースから受信した入力を、前記ソフトウェアアプリケーションが認識する１以上の命令またはイベントにマッピングする方法およびシステムに関する。
【背景技術】
【０００２】
ソフトウェアアプリケーションは、そのようなソフトウェアアプリケーションを実装または実行しているコンピューティングシステムに接続された入力装置またはコンピューティングシステムと一体型の入力装置を介して制御される。これらの入力装置により、ユーザは、ソフトウェアアプリケーションとインタフェースし、ソフトウェアアプリケーションに対する制御または状態変更命令を行うことができる。
【０００３】
図１は、１以上のソフトウェアアプリケーションの実行に使用されるタイプの例示的なシステム環境１００を示す。システム環境１００は、１以上の入力装置１０４（例えば、キーボード、タッチパッド、マウス、ゲームパッド、モーションセンサ／検出器、ジョイスティックまたはその他の態様の入力制御部等の、一体型入力装置または周辺入力装置）と通信可能に接続されたコンピューティングシステム１０２を備える。コンピューティングシステム１０２は、さらに、クラウド１０６とネットワーク通信していてもよい（このクラウド１０６は、任意のインターネットワーク、ネットワークバックエンド、またはネットワークバックボーン、例えば、インターネットでもよい）。
【０００４】
コンピューティングシステム１０２は、プロセッサが実行する入力層制御部を備えた入力層、プロセッサが実行するネットワークトラフィック層制御部１０２４を備えたネットワークトラフィック層、プロセッサが実行するディスクデータ層制御部１０２６を備えたディスクデータ層、およびアプリケーション制御部１０２８を含む。
【０００５】
入力層制御部１０２２は、１以上の入力装置（複数可）と通信して、入力装置（複数可）１０４からおよび入力装置（複数可）１０４に対して制御データおよび／または状態データを送受信し、コンピューティングシステム１０２を介して実行中のソフトウェアアプリケーションに対して制御データおよび／または状態データを送受信するように構成されている。ネットワークトラフィック層制御部１０２４は、クラウド１０６とソフトウェアアプリケーションとの間で制御データおよび／または状態データを送受信するように構成される。ディスクデータ層制御部１０２６は、１以上のデータベースから制御データおよび／または状態データを読み出し、ソフトウェアアプリケーションを実行または制御する目的でそのようなデータを利用するように構成される。
【０００６】
アプリケーション制御部１０２８は、入力層制御部１０２２と、ネットワークトラフィック層制御部１０２４と、ディスクデータ層制御部１０２６とのうちの１以上と通信可能に接続される。アプリケーション制御部１０２８は、ソフトウェアアプリケーションに対応するソフトウェアコードに基づいて、および、入力層制御部１０２２と、ネットワークトラフィック層制御部１０２４と、ディスクデータ層制御部１０２６とのうちの１以上から受信したデータに基づいて、ソフトウェアアプリケーションを実行および制御するように構成される。
【０００７】
図示の実施態様では、アプリケーション制御部１０２８は、（ｉ）ソフトウェアアプリケーションに対応するソフトウェアコード、および／または（ｉｉ）入力層制御部１０２２と、ネットワークトラフィック層制御部１０２４と、ディスクデータ層制御部１０２６とのうちの１以上から受信したデータに基づいて、表示装置（例えば、表示画面）上に１以上のグラフィックオブジェクトをレンダリングするように構成されたグラフィックス制御部１０３０を備える。図示のアプリケーション制御部１０２８はまた、（ｉ）ソフトウェアアプリケーションに対応するソフトウェアコード、および／または（ｉｉ）入力層制御部１０２２と、ネットワークトラフィック層制御部１０２４と、ディスクデータ層制御部１０２６とのうちの１以上から受信されたデータに基づき、１以上のオーディオ装置（例えば、スピーカまたはヘッドフォン）を介したオーディオ出力を生成および制御するように構成されたオーディオ制御部１０３２を含む。アプリケーション制御部１０２８、グラフィックス制御部１０３０、およびオーディオ制御部１０３２は、ソフトウェアアプリケーションの機能を実現するために、ディスクデータ層制御部１０２６と、ネットワークトラフィック層制御部１０２４と、入力層制御部１０２２と、クラウド１０６、および／または入力装置（複数可）１０４のうちの１以上との間でデータを送受信するように構成されてもよい。
【０００８】
ソフトウェアアプリケーションの利用可能性、およびソフトウェアアプリケーションを実行可能な装置およびプラットフォームの利用可能性が高まるにつれて、ユーザインタフェースおよびユーザ体験のカスタマイズに対する需要が高まっている。様々な入力装置と入力装置制御部を選択および使用して、そのような入力装置／制御部／入力で使用するように設計されていない可能性があるソフトウェアアプリケーションプログラムの制御またはソフトウェアアプリケーションプログラムへの入力を行う能力に関してカスタマイズへの特に強い需要がある。これは特にゲーム関連のソフトウェアアプリケーションの場合である。ゲーム関連のソフトウェアアプリケーションの場合、ゲームを制御するために使用可能な装置と、ゲーム関連のソフトウェアアプリケーションによって認識される命令やイベントをトリガするために使用可能なユーザ入力／ユーザ入力シーケンスとの両方の点で、高度な制御パーソナライゼーションをユーザは好む。
【０００９】
また、仮想マシン環境（これにより、第１のオペレーティングシステム（例えば、Ａｎｄｒｏｉｄ  ＯＳ）用に開発されたアプリケーションを、第２のオペレーティングシステム（例えば、ｍａｃＯＳ（登録商標）またはＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム）をホストオペレーティングシステムとして実行しているマシン上で実行することが可能になる）を介したクロスオペレーティングシステムランタイムの増加に伴い、仮想マシン環境を介して第２のオペレーティングシステム内でプログラムが実行されている際に、第１のオペレーティングシステム用に記述されたプログラムについて定められた制御が利用不能になったり、非効率になったりすることがわかっている。
【００１０】
したがって、ソフトウェアアプリケーションを実行中のコンピューティング装置に通信可能に接続された１以上の制御部またはユーザインタフェースから受け付けた入力を、前記ソフトウェアアプリケーションが認識するように構成された１以上の命令またはイベントにマッピングするための効果的な解決策が必要とされている。
【発明の概要】
【００１１】
本発明は、ソフトウェアアプリケーションが実行されているコンピューティングシステムまたはコンピューティング装置に通信可能に接続された１以上の制御部またはユーザインタフェースから受け付けた入力を、前記ソフトウェアアプリケーションが認識するよう構成された１以上の命令またはイベントにマッピングする方法およびシステムを提供する。
【００１２】
一実施態様では、本発明は、ソフトウェアアプリケーションに入力をマッピングするための方法である。本発明は、１以上のプロセッサが、（ｉ）入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、（ｉｉ）入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、（ｉｉｉ）前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、（ｉｖ）前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、（ｖ）前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する。
【００１３】
この方法のさらなる実施態様では、前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する。前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかであってもよい。
【００１４】
この方法の実施態様では、（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、または、（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる。
【００１５】
特定の方法の実施態様では、（ｉ）前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、（ｉｉ）前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、（ｉｉｉ）前記入力イベントの第２セットは、（ａ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、（ｂ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、（ｃ）前記ゲストオペレーティングシステムによって認識される。
【００１６】
方法の一実施態様では、前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される。
【００１７】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、（ａ）前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、（ｂ）前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットとを生成するステップをさらに具備し、前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す。
【００１８】
別の方法の実施態様では、前記グラフィックオブジェクトの第２セットは、（ｉ）前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または、（ｉｉ）前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現である。
【００１９】
この方法の実施態様では、（ｉ）前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、（ｉｉ）前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた前記表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている。
【００２０】
別の実施態様では、前記受信したキーマップは、複数のキーマップから選択され、前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである。
【００２１】
方法の一実施態様において前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである。
【００２２】
具体的な方法の実施態様では、前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、（ｉ）前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、（ｉｉ）前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、（ｉｉｉ）前記入力イベントの第２セットは、（ａ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または（ｂ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、（ｃ）前記ゲストオペレーティングシステムによって認識され、（ｉｖ）前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、前記データ、前記要求、または前記命令は、（ａ）前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、（ｂ）前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、（ｃ）前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、（ｄ）前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、（ｅ）前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、（ｆ）ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、のいずれかにおいて、または、いずれかから受信される。
【００２３】
別の実施態様では、本発明は、ソフトウェアアプリケーションに入力をマッピングするためのシステムを提供する。当該システムは、プロセッサによって実行されるコンピューティングシステムを具備し、（ｉ）入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、（ｉｉ）入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、（ｉｉｉ）前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、（ｉｖ）前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、（ｖ）前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、ように前記コンピューティングシステムが構成されている。
【００２４】
システムの一実施態様では、前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する。
【００２５】
前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかである。
【００２６】
さらなるシステムの実施態様では、（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、または、（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる。
【００２７】
ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、（ｉ）前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、（ｉｉ）前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、（ｉｉｉ）前記入力イベントの第２セットは、（ａ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、（ｂ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、（ｃ）前記ゲストオペレーティングシステムによって認識される。
【００２８】
システムの一実施態様では、前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される。
【００２９】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、（ａ）前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、（ｂ）前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットとを生成し、前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す。
【００３０】
システムの一実施態様では、前記グラフィックオブジェクトの第２セットは、（ｉ）前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または、（ｉｉ）前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現である。
【００３１】
さらなるシステムの実施態様では、（ｉ）前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、（ｉｉ）前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた前記表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている。
【００３２】
別のシステム実施態様では、前記受信したキーマップは、複数のキーマップから選択され、前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである。
【００３３】
前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである。
【００３４】
システムは、前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、（ｉ）前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、（ｉｉ）前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、（ｉｉｉ）前記入力イベントの第２セットは、（ａ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または（ｂ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、（ｃ）前記ゲストオペレーティングシステムによって認識され、（ｉｖ）前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、前記データ、前記要求、または前記命令は、（ａ）前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、（ｂ）前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、（ｃ）前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、（ｄ）前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、（ｅ）前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、（ｆ）ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、のいずれかにおいて、または、いずれかから受信される。
【００３５】
本発明はまた、ソフトウェアアプリケーションに入力をマッピングするためのコンピュータプログラム製品を提供する。コンピュータプログラム製品は、コンピュータ読み取り可能なコードが組み込まれた非一過性のコンピュータが使用可能な媒体であり、コンピュータ読み取り可能なコードは、プロセッサにおいて、（ｉ）入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、（ｉｉ）入力装置の前記第１セット内の入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、（ｉｉｉ）前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、（ｉｖ）前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、（ｖ）前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する。
【図面の簡単な説明】
【００３６】
図１は、ソフトウェアアプリケーションを実行するための例示的なシステム環境を示す。
【００３７】
図２は、ホストオペレーティングシステム内のゲストオペレーティングシステム内でのランタイム実行のために記述またはコンパイルされたアプリケーションソフトウェアを実行するように構成された、コンピュータによって実現されるアーキテクチャの例示的なシステムを示す。
【００３８】
図３および４は、本発明を実施するように構成されたコンピューティングシステム内でソフトウェアアプリケーションを実行するための例示的なシステム環境を示す。
【００３９】
図５および７は、本発明の教示による入力キーマッピングの方法を示す。
【００４０】
図６は、本発明の教示による入力キーマップオーバレイの方法を示す。
【００４１】
図８は、本発明を実施するために使用可能なタイプの例示的なコンピューティングシステムを示す。
【００４２】
(詳細な説明)
本発明は、ソフトウェアアプリケーションを実行中のコンピューティングシステムまたはコンピューティング装置に通信可能に接続された１以上の制御部またはユーザインタフェースから受信した入力を、ソフトウェアアプリケーションが認識するように構成されている１以上の命令またはイベントにマッピングすることを可能にする。
【００４３】
本発明は、図１に例示するタイプのコンピューティングシステム（簡単に前述）を介して実施してもよい。
【００４４】
より特定の実施態様では、本発明の教示にしたがってソフトウェアアプリケーションを実装または実行するために使用されるコンピューティングシステムは、コンピュータシステムアーキテクチャ上で実行されるホストオペレーティングシステム内のゲストオペレーティングシステムの仮想インスタンスを実行するように構成され、さらには、ホストオペレーティングシステム内のゲストオペレーティングシステムの仮想インスタンス内で、ゲストオペレーティングシステム用に記述されたソフトウェアプログラムのランタイム実行を可能にするように構成された、コンピュータシステムアーキテクチャであってもよい。図２は、ゲストオペレーティングシステムアーキテクチャ（例えば、Ａｎｄｒｏｉｄアーキテクチャ）およびホストオペレーティングシステムアーキテクチャ（例えば、Ｗｉｎｄｏｗｓ／ｍａｃＯＳアーキテクチャ）を含むコンピュータシステムアーキテクチャ２００の例示的な実施態様を示す。
【００４５】
図２に示されるように、コンピュータシステムアーキテクチャ２００は、メモリ２０２と、１以上のハードウェア装置２０４と、互いに通信可能に接続された１以上のプロセッサ２０６とを備える。メモリ２０２は、ホストオペレーティングシステム２０８をロードまたは記憶している。コンピュータシステムアーキテクチャ２００内に実装されるゲストオペレーティングシステムは、ハードウェアアーキテクチャをエミュレートするように構成されたホストオペレーティングシステムソフトウェアアプリケーション２１０を実行することによって起動されるオペレーティングシステムの仮想インスタンスである。ハードウェアアーキテクチャはゲストオペレーティングを実装可能であり、ホストオペレーティングシステムソフトウェアアプリケーション２１０は、仮想ソフトウェアまたはハイパーバイザとも呼ばれる。ハイパーバイザを実行することで、仮想マシンのインスタンス２１４が生成される。生成された仮想マシン上では、エンドユーザに対して透過的な方法でゲストオペレーティングシステムが実行可能である。
【００４６】
生成されたゲストオペレーティングシステムのインスタンス２１４は、アプリケーションプログラム層２１４２と、アプリケーションフレームワーク層２１４４と、ライブラリ層２１４６と、ハードウェア抽象化層（ＨＡＬ）２１４８と、カーネル層２１５０との１以上を含むソフトウェアスタックを含んでもよい。アプリケーションプログラム層２１４２は、各種のソフトウェアアプリケーションを含む。アプリケーションフレームワーク層２１４４は、開発者がフレームワークアプリケーションプログラミングインタフェース（ＡＰＩ）にアクセスし、リソースの割り当て、プロセス間またはプログラム間の切り替え、電話アプリケーション、およびコンピューティングシステム（例えば、実行中の電話／ラップトップ／タブレット）の物理的な位置の追跡など、ゲストオペレーティングシステムが実行されるモバイル装置、ラップトップ、またはタブレットの基本機能を管理するために使用される。アプリケーションフレームワーク層２１４４は、アクティビティマネージャ、ウィンドウマネージャ、コンテンツプロバイダマネージャ、ビューシステムマネージャ、パッケージマネージャ、電話マネージャ、リソースマネージャ、位置マネージャ、および通知マネージャを含む各種マネージャを含み得る。
【００４７】
ライブラリ層２１４６は、例えば、Ｃ、Ｃ＋＋などで記述されたライブラリを含み、各種システムによって利用される。これらのライブラリは、ゲストオペレーティングシステムを実行する装置に、様々な種類のデータを処理する方法を指示する。ライブラリは、アプリケーションフレームワークを介して開発者に公開される。ゲストオペレーティングシステムがＡｎｄｒｏｉｄである例示的な実施態様では、ライブラリは、例えば、サーフェスマネージャ、メディアフレームワークライブラリ、ＳＱＬｉｔｅライブラリ、Ｏｐｅｎ  ＧＬ／ＥＳライブラリ、Ｆｒｅｅ  Ｔｙｐｅライブラリ、ＷｅｂＫｉｔライブラリ、ＳＧＬライブラリ、ＳＳＬライブラリ、およびｌｉｂｃライブラリを含んでもよい。
【００４８】
ハードウェア抽象化層２１４８は、ゲストオペレーティングシステムプラットフォームスタックと基盤となるハードウェアとの間のソフトウェアフック（ソフトウェアコンポーネント間で渡される関数呼び出しまたはメッセージまたはイベントを傍受することによって、オペレーティングシステム、アプリケーション、または他のソフトウェアコンポーネントの振る舞いを変更または増強させるために使用されるコード）を生成する標準的な方法を提供する。ハードウェア抽象化層２１４８は、ハードウェアと残りのソフトウェアスタックとの間の抽象化層としても機能する。
【００４９】
ゲストオペレーティングシステムカーネル層２１５０は、ゲストオペレーティングシステムのメモリ管理プログラムと、セキュリティ設定と、電力管理ソフトウェアと、ハードウェア用の装置ドライバや、ファイルシステムアクセス、ネットワーク、プロセス間通信などのいくつかのドライバとを含む。図示の実施態様では、ゲストオペレーティングシステムカーネル層２１５０は、少なくとも、ゲストオペレーティングシステムハードウェア装置ドライバ２１５２を含む。
【００５０】
通常、動作においては、ゲストオペレーティングシステムなどのオペレーティングシステムが、コンピューティングシステム上でホストオペレーティングシステムとして直接実行されている場合、ゲストオペレーティングシステムソフトウェアアプリケーションからハードウェア装置２０４（例えば、オーディオ装置または表示装置）への命令は、対応するゲストオペレーティングシステムカーネル層２１５０内のハードウェア装置ドライバ２１５２にルーティングされ、このドライバは、その後、受信した命令に基づいてハードウェア装置２０４の動作を制御するであろう。しかしながら、図２に示される例示では、ゲストオペレーティングシステムの仮想インスタンス２１４は、ホストオペレーティングシステム２０８内から起動されるため、ゲストオペレーティングシステムの仮想インスタンス２１４は、１または複数のプロセスとしてホストオペレーティングシステム２０８内で実行されるであろう。ゲストオペレーティングシステムの仮想インスタンス２１４のアプリケーションプログラム層２１４２内で実行されているアプリケーションプログラムによって生成された、ゲストオペレーティングシステムカーネル２１５０内の装置ドライバ２１５２を介してハードウェアにアクセスするための命令は、そのようなアクセスがホストオペレーティングシステム２１８の範囲外にあるため、ホストオペレーティングシステム２０８にとっては動作不能／無意味なものとなるであろう。したがって、ゲストオペレーティングシステムカーネルのハードウェア装置ドライバ２１５２が要求または命令を満たすことができないので、ゲストオペレーティングシステムの仮想インスタンス２１４内で実行中のアプリケーションプログラムからのデータの要求または命令は、ハードウェア抽象化層２１４８からゲストオペレーティングシステムカーネル層２１５０に（図２において取り消し線が付された通信リンクによって図示されているように）送信されないであろう。その結果、意図しないハードウェアの状態、またはハードウェアの誤動作が生じるであろう。
【００５１】
代わりに、そのような要求または命令は、ゲストオペレーティングシステムの仮想インスタンス２１４内のハードウェア抽象化層２１５２から、アプリケーションフレームワーク層２１４４と、ライブラリ層２１４６と、ハードウェア抽象化層２１４８と、ハードウェア抽象化層２１４８とホストオペレーティングシステムアプリケーションソフトウェア２１０との間のデータチャネルと、のうちの１以上を介して、ホストオペレーティングシステムアプリケーションソフトウェア２１０にルーティングされる。データチャネルは、当該データチャネルにより、ゲストオペレーティングシステムの仮想インスタンス２１４内で実行中のアプリケーションプログラムからの要求または命令を、ホストオペレーティングシステムアプリケーションソフトウェア２１０に中継できるように構成されている。
【００５２】
ホストオペレーティングシステムアプリケーションソフトウェア２１０は、ホストオペレーティングシステム２０８に関連付けられたアプリケーションであり、ホストオペレーティングシステムプロセッサによって、ホストオペレーティングシステム２０８を介して実行される。ホストオペレーティングシステムアプリケーションソフトウェアを介して、ゲストオペレーティングシステムのアプリケーションは、ホストオペレーティングシステム２０８のハードウェアおよびシステムデータにアクセスすることができる。ホストオペレーティングシステム２０８は、ホストオペレーティングシステムプロセッサと接続されるとともにホストオペレーティングシステムを介して制御されるハードウェア装置２０４を含む。
【００５３】
データチャネルを介して受信された要求または命令は、ホストオペレーティングシステムアプリケーションソフトウェア２１０から、ホストオペレーティングシステム２０８によって制御されるハードウェアドライバ２１２に転送される。そして、ハードウェアドライバ２１２は、ホストオペレーティングシステムのハードウェア抽象化層（図示せず）を介して、適切なハードウェア装置２０４にアクセスする。ハードウェア装置データ、または制御命令のハードウェア装置確認応答、または制御命令の実行に関するハードウェア装置確認は、読み出されて、ホストオペレーティングシステムによって制御されるハードウェアドライバ２１２を介してホストオペレーティングシステムアプリケーションソフトウェア２１０に送り返される。その後、ハードウェア装置データ、または制御命令の確認応答、または制御命令の実行に関する確認は、データを要求したゲストオペレーティングシステムあるいは制御命令を開始したゲストオペレーティングシステムの仮想インスタンス２１４内で実行中のアプリケーションプログラムにルーティングされてもよい。データ／確認応答／確認がゲストオペレーティングシステムのハードウェア抽象化層２１４８で利用可能能になると、仮想マシン内のライブラリ層２１４６およびアプリケーションフレームワーク層２１４４を含む、ゲストオペレーティングシステムの他の上位層が期待どおり機能することになる。
【００５４】
図３は、図１においてより概略的に説明したタイプのシステム環境３００を示しており、本発明を実施するように具体的に構成されている。システム環境３００は、１以上の入力装置３０４（例えば、キーボード、タッチパッド、マウス、ゲームパッド、モーションセンサ／検出器、ジョイスティック、または他の態様の入力制御部などの一体型入力装置または周辺入力装置）と通信可能に接続されたコンピューティングシステム３０２を備える。コンピューティングシステム３０２は、さらに、クラウド３０６（クラウド３０６は、インターネットなどの、任意のインターネットワーク、ネットワークバックエンド、またはネットワークバックボーンを含んでもよい）とネットワーク通信を行ってもよい。
【００５５】
コンピューティングシステム３０２は、所望のソフトウェアアプリケーション、例えば、ゲームソフトウェアアプリケーションを実装または実行するように構成される。図示の実施態様では、コンピューティングシステム３０２は、（ｉ）１以上の入力装置３０４とインタフェースし、ユーザ入力を受け付けるように構成された入力層制御部３０２２と、（ｉｉ）コンピューティングシステムとネットワーク（例えば、インターネット）との間のインタフェースとして機能し、ネットワーク通信のコンピューティングシステムにおける受信およびコンピューティングシステムからの送信を可能にするように構成されたネットワークトラフィック層制御部３０２４と、（ｉｉｉ）コンピューティングシステムに関連付けられたディスク（または他の非一時的ストレージ）に記憶されたデータを処理するように構成されたディスクデータ層制御部３０２６と、（ｉｖ）ソフトウェアアプリケーションに対応するソフトウェアコードに基づいて、および／または、入力層制御部３０２２と、ネットワークトラフィック層制御部３０２４と、ディスクデータ層制御部３０２６と、のうちの１以上から受信したデータに基づいて、ソフトウェアアプリケーションを実行および制御するように構成されたアプリケーション制御部３０２８とを備える。アプリケーション制御部３０２８はさらに、（ａ）ソフトウェアアプリケーションプログラム命令を、コンピューティングシステム３０２に接続された表示制御部により解釈および実行可能なマシンレベルの命令に翻訳するように構成されたグラフィックス制御部３０３０、および（ｂ）ソフトウェアアプリケーションプログラム命令を、コンピューティングシステム３０２に接続されたオーディオ制御部により解釈および実行可能なマシンレベルの命令に翻訳するように構成されたオーディオ制御部３０３２を含む。
【００５６】
コンピューティングシステム３０２は、１以上の入力装置／入力制御部３０４と通信可能に接続されてもよい。入力装置／入力制御部３０４は、キーボード、マウス、任意の他の入力装置、またはゲーム制御部のうちの１以上を各種含んでもよい。ゲーム制御部は、ゲームパッド、パドル、ジョイスティック、トラックボール、スロットルクアドラント、方向制御部、タッチパッド、方向パッド、またはモーションセンサーベースの制御部を含んでもよいが、これらに限定されない。
【００５７】
上記に加えて、システム環境３００のコンピューティングシステム３０２はキーマッピング層３０３４を含むことに留意されたい。キーマッピング層３０３４は、通信中間層として構成されてもよいし、または、一方の側では（ｉ）アプリケーション制御部３０２８、またはグラフィックス制御部３０３０、またはオーディオ制御部３０３２と、他方の側では（ｉｉ）入力装置（複数可）３０４、入力層制御部３０２２、ネットワークトラフィック層制御部３０２４、ディスクデータ層制御部３０２６、およびクラウド３０６のうちの１以上と、の間に通信可能に挿入されるゲートウェイ層として構成されてもよい。
【００５８】
キーマッピング層３０３４は、キーマッピング制御部３０３６および視覚オーバレイ制御部３０３８の一方または両方を含む。これらの各機能は、以下でより詳細に説明する。
【００５９】
本明細書の目的のために、「キーマップ」または「キーマッピング」という用語は、それぞれ、「入力マップ」または「入力マッピング」と交換可能であり、任意のキー（複数可）のマッピングへの言及は、キーボードから受け付けた入力に限定されることを意図したものではなく、むしろ、コンピューティング装置に接続可能であり、コンピューティング装置に対してユーザ入力を行うために使用可能な入力装置から受け付けた任意の入力イベントを包含する。
【００６０】
キーマッピング層３０３４内のキーマッピング制御部３０３６は、一実施態様では、１以上の入力装置３０４から受け付けた入力を、コンピューティングシステム３０２上で実行中のソフトウェアアプリケーション／ゲームアプリケーションによって検出および解釈可能な命令またはイベントに翻訳するように構成される。例えば、コンピューティングシステムで実行中のゲームアプリケーションにおいて、キーマッピング制御部３０３６は、キーボード上のキー押下イベントを介して受け付けられた入力を、タッチパッドまたはタッチスクリーンを介した入力を必要とするタッチアクション（例えば、走る、射撃する、など）に翻訳するように構成されてもよいし、または加速度計を備えた装置を介した入力を必要とする傾斜ベースのアクション（例えば、回転する、傾斜させる、など）に翻訳するように構成されてもよい。
【００６１】
キーマッピングイベントは、単なる例示に過ぎず、網羅的であることを意図するものではないことが理解されよう。そして、本発明によって企図されるキーマッピングは、入力制御の１つのセットを別のセットの入力制御で置き換えること、ソフトウェアアプリケーションが入力を受け付けるようにコード化されていない１以上の入力装置からの解釈可能な入力をソフトウェアアプリケーションが受け付け可能にすること、または、ひとつの入力イベントにより、実行中のソフトウェアアプリケーション内で複数の命令またはイベントを実行することを可能にするマクロを定義することを含む、他の各種の目的を解決可能であることが理解されるであろう。
【００６２】
本発明の一実施態様では、キーマッピング制御部は、１以上の入力装置３０４から受信した入力を、コンピューティングシステム３０２上で実行中のソフトウェアアプリケーション／ゲームアプリケーションが検出および解釈可能な命令またはイベントに翻訳するように構成されてもよい。この翻訳は、１以上のルックアップテーブル、または、１以上の置換テーブルに基づき、あるいは、１以上の入力装置３０４から受け付けた入力と、コンピューティングシステム３０２上で実行中のソフトウェアアプリケーション／ゲームアプリケーションが検出および解釈可能な命令またはイベントとの関連付けを可能にする、任意の他のデータレコードに基づいて行われる。
【００６３】
視覚オーバレイ制御部３０３８は、ソフトウェアアプリケーション／ゲームアプリケーションによって生成された１以上の表示画面に、現在のキーマップ、または、キーマッピング制御部３０３６を介して、特定のアプリケーション関連機能と関連付けられたキーまたは入力制御に関する他の視覚的表示（複数可）をオーバレイするように構成される。例えば、タッチスクリーンの定められた領域での（タッチスクリーンまたはタッチパッド上での）タッチイベントの検出を、プレイヤーのアバターが特定の方向に移動するための指示としてアプリケーションコードが解釈し、このタッチイベントに対してキーマッピング制御部３０３６が特定のキーボードキーをマッピングしたゲームアプリケーションにおいては、視覚オーバレイ制御部３０３８は、特定されたキーボードキーに対応する文字を、タッチイベントを開始する目的でアプリケーションコードによって定められた表示画面の領域に、または当該領域の近傍に、または当該領域に対して相対的に定められた位置にオーバレイするように構成されてもよい。
【００６４】
上述したタイプの視覚オーバレイを実現するように視覚オーバレイ制御部を構成することにより、ソフトウェアアプリケーションを制御するユーザは、キーマッピング制御部３０３６によってアクティブ化されたキー／制御に対する視覚的マップを受け取り、これらのキーを特定のソフトウェアアプリケーションイベントまたは制御命令の開始に使用することができる。
【００６５】
図４に示される本発明の一実施態様では、キーマッピング層３０３４は、状態検出部３０４０をさらに含み、キーマッピング制御部３０３６は、適応キーマッピングを実行するように、すなわち、複数のキーマップ／キーマッピングプロファイルの中から特定のキーマップ／キーマッピングプロファイルを、イベントまたはパラメータに基づいて選択するように構成されてもよい。換言すると、キーマッピング制御部３０３６は、第１の状態の検出、または第１のパラメータもしくはパラメータの第１セットの検出に応じて、第１のキーマップ（すなわち、ユーザ入力とソフトウェアアプリケーション命令／イベントとの間のキーマッピング関連付けの第１セット）を実行し、第２の状態の検出、または第２のパラメータもしくはパラメータの第２セットの検出に応じて、第２のキーマップ（すなわち、ユーザ入力とソフトウェアアプリケーション命令／イベントとの間のキーマッピング関連付けの第２セット）を実行するように構成されてもよい。適応キーマッピングを実装する目的でキーマッピング制御部３０３６によって選択されて実行されたキーマップを決定づける状態またはパラメータ（複数可）を、キーマッピング層３０３４内の状態検出部３０４０が検出してもよい。
【００６６】
本発明のさらなる実施態様では、視覚オーバレイ制御部３０３８は、キーマッピング制御部３０３６が特定のキーマップをイベントまたはパラメータベースに基づいて選択すると、キーマップの適応オーバレイを実行するように構成されてもよい。
【００６７】
一実施態様では、キーマッピング制御部３０３６は、状態検出部３０４０による１以上の予め定められた状態または状態変化の検出に基づいて、第１のキーマップまたはキーマッププロファイルを第２のキーマップまたはキーマッププロファイルに切り替える。第１のキーマップから第２のキーマップへの切り替えを開始するために利用し得る状態変化には、グラフィック状態／視覚表示状態、オーディオ状態、ディスク上のアプリケーションデータ／ゲームデータの状態、ネットワークから受信したデータの状態、または、クラウドから受信した入力の状態のうちの１以上の状態変化が含まれる。これらの状態変化のそれぞれについて、以下に簡単に説明する。
●グラフィック状態／視覚表示状態に基づくキーマップ切り替え−  一実施態様では、（ｉ）予め定められた表示画面（複数可）、（ｉｉ）画面上に表示される予め定められたグラフィックオブジェクト、または（ｉｉｉ）定義された一連の条件を満たす方法で表示される、予め定められたグラフィックオブジェクトの組み合わせ、の検出に応じて、特定のキーマップ／キーマッププロファイルが選択される。例えば、一人称シューティングゲームであるソフトウェアアプリケーションでは、第１のキーマップがキーボードキー「ｄ」をキャラクタの武器のドロッピングに関連付け、第２のキーマップが同じキーボードキー「ｄ」を車両の運転に関連付けてもよい。この実施態様では、キャラクタが武器を持って表示されている限り、第１のキーマップを、選択されたデフォルトのキーマップとしてもよく、車両から所定の距離内でキャラクタが画面上に配置されると、システムは自動的に第１のキーマップから第２のキーマップに切り替えてもよい。
●オーディオ状態に基づくキーマップ切り替え−  一実施態様では、ソフトウェアアプリケーションによってオーディオ制御部に通信されてユーザに対して再生される予め定められた音響データの検出、または、ソフトウェアアプリケーションから受信した命令の実行の受領確認または確認として、オーディオ制御部からソフトウェアアプリケーションに返される予め定められた音響データの検出に応じて特定のキーマップ／キーマッププロファイルが選択される。例えば、上述した一人称シューティングゲームを含むソフトウェアアプリケーションでは、雨を示す音声データを検出すると、雨の環境におけるゲームプレイ中にのみ利用できるパワーまたは能力が利用可能となるキーマップまたはキーマッププロファイルが選択されるようにしてもよい。
●ディスク上のゲームデータの状態に基づくキーマップ切り替え−一実施態様では、ディスクに記憶されたデータパラメータから検索される１以上のソフトウェアアプリケーションパラメータの検出に応じて特定のキーマップ／キーマッププロファイルが選択されてもよい。例えば、特定のゲームアプリケーションでは、プレイヤーの能力とプレイヤーが利用可能な機能は、プレイヤーが進行させたゲームのレベル／ステージに依存してもよく、プレイヤーに蓄積された経験値または経験レベルに依存してもよい。ゲームをプレイ中のコンピューティング装置のローカルディスクからこの情報は検索されてもよく、プレイヤーがそのレベル／ステージ／経験で利用可能なすべての能力と機能とを完全に実装するために必要なキーを提供するキーマップの選択および実行が可能である。
●ネットワークトラフィックの状態に基づくキーマップスイッチング−  一実施態様では、ネットワークを介して受信されたデータパラメータから検索される１以上のソフトウェアアプリケーションパラメータの検出に応じて特定のキーマップ／キーマッププロファイルが選択されてもよい。例えば、特定のゲームアプリケーションでは、プレイヤーの能力とプレイヤーが利用可能な機能は、プレイヤーが進行させたゲームのレベル／ステージに依存してもよく、プレイヤーに蓄積された経験値または経験レベルに依存してもよい。この情報は、ゲームプレイ装置がネットワーク通信しているサーバから定期的に検索されてもよい。プレイヤーがそのレベル／ステージ／経験で利用可能なすべての能力と機能とを完全に実装するために必要なキーを提供するキーマップを、ネットワークサーバから受信したデータパラメータに基づいて選択して実行することができる。
●クラウドから受信した入力の状態に基づくキーマップの切り替え−  一実施態様では、ユーザまたはソフトウェアアプリケーションが関与する複数のセッションにわたって収集されたセッションデータの分析に基づいて生成されクラウドサーバ上に記憶された１以上のデータパラメータの受信に応じて特定のキーマップ／キーマッププロファイルが選択されてもよい。例えば、左利きのプレイヤーに第１のキーマッピングプロファイルを提供し、右利きのプレイヤーに第２のキーマッピングプロファイルを提供する特定のゲームアプリケーションでは、特定のゲームまたはゲームプラットフォームまたはソフトウェアエミュレーションプラットフォームに関連付けられたクラウドサーバは、特定のユーザが過去３回のセッションにおいて左利き用のキーマッピングプロファイルを選択したことを検出した可能性がある。この情報を、同じユーザが関与するセッションログインイベントの検出に応じて開始される次のゲームプレイのセッションに左利き用のキーマッピングプロファイルを自動的に選択するために使用してもよい。
【００６８】
ある実施態様では、適応キーマッピングは、適応的に選択されて実行された特定のキーマップ（または特定のキーマップに関連付けられた情報またはグラフィックオブジェクト）を表示するための適応視覚オーバレイを伴ってもよいことが理解されよう。
【００６９】
ある実施態様では、選択または適応選択に利用可能な１以上のキーマッピングプロファイルは、ひとつの入力イベントが、実行中のソフトウェアアプリケーション内の複数の命令またはイベントを実行させるように定義され得る１対多の機能（すなわち、マクロ機能）を実装するキーマップを含んでもよいことも理解されよう。例えば、複数の武器を有するプレイヤーが関与するゲームアプリケーションでは、ひとつのキー押下イベントが、第１の武器を用いた第１の発砲イベントと、第１の武器を第２の武器に持ち換えた後の、第２の武器を用いた第２の発砲イベントとからなる発砲コンビネーションをトリガするように定義されてもよい。このような１対多の機能を定義することで、熟練したユーザは、自分のキーマップを定義してリアクション時間を短縮し、より良いゲームプレイ結果を得ることができるため、より効率的なゲームプレイを実現することができる。
【００７０】
本発明のさらなる実施態様では、ソフトウェアアプリケーションに関連付けられた上述の状態変化の１以上が検出されると、例えば、キーボード上のライトの照明の状態、キーボードマウスもしくはタッチパッド上の振動の状態、表示画面の照明の状態もしくは照明レベル、または、キーボードバックライトの照明の状態もしくは照明レベルを選択もしくは変更することにより、視覚的、音声的または触知的（ｈａｐｔｉｃ）フィードバックをユーザに提供してもよい。特定の実施態様では、そのようなフィードバックは、アプリケーション制御部３０３８によって生成および／または制御されてもよい。よって、グラフィックス制御部３０３０、オーディオ制御部３０３２、表示制御部、入力装置制御部、照明制御部、または触知制御部のうちの１以上に依存してもよい。
【００７１】
本発明の一実施態様では、本発明は、図２に示されるタイプのアーキテクチャ（すなわち、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムのインスタンスで実行するように構成されたアプリケーションソフトウェアの実行を可能にする、コンピュータにより実現されるアーキテクチャ）を有するコンピューティングシステムで実行されてもよい。各種のそのような実施態様において−
●グラフィック状態または視覚表示状態に基づくキーマップの切り替えにおいては、（ｉ）予め定められた表示画面（複数可）、（ｉｉ）画面に表示された予め定められたグラフィックオブジェクト、または（ｉｉｉ）定義された一連の条件を満たす方法で表示される予め定められたグラフィックオブジェクトの組み合わせの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、上記の１以上の検出は、
〇仮想マシン２１４内のアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内の、ゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、または
〇ホストオペレーティングシステムハードウェア装置ドライバ２１２から、ホストオペレーティングシステムアプリケーションソフトウェア２１０で、
受信したデータ、要求（複数可）、または命令（複数可）に基づいてもよい。
●オーディオ状態に基づくキーマップの切り替えにおいては、アプリケーションプログラムによってオーディオ制御部またはオーディオ装置ドライバに対して（またはその逆に）通信される予め定められた音響データまたは命令または要求の検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、上記１以上の検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内の、ゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、または
〇ホストオペレーティングシステムハードウェア装置ドライバ２１２からのホストオペレーティングシステムアプリケーションソフトウェア２１０で、
受信したデータ、要求（複数可）、または命令（複数可）に基づいてもよい。
●ディスク上のゲームデータの状態に基づくキーマップの切り替えにおいては、ディスクに記憶されたデータパラメータから検索された１以上のソフトウェアアプリケーションパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介して、ホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
●ネットワークトラフィックの状態に基づくキーマップの切り替えにおいては、ネットワーク経由で受信したデータパラメータから検索された１以上のソフトウェアアプリケーションパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
●クラウドから受信した入力の状態に基づくキーマップの切り替えにおいては、ユーザまたはソフトウェアアプリケーションが関与する複数のセッションにわたって収集されたセッションデータの分析に基づいて生成されクラウドサーバに記憶された１以上のデータパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、前記ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介して、ホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
【００７２】
図５から図７は、本発明の教示による入力キーマッピングの方法を示す。
【００７３】
図５は、本発明の方法によるキーマッピングの方法を示す。当該方法は、１以上の入力装置３０４から受信した入力を、コンピューティングシステム３０２で実行中のソフトウェアアプリケーションまたはゲームアプリケーションによって検出および解釈可能な命令またはイベントに翻訳するための方法である。各種の実施態様では、以下に説明する方法ステップの１以上は、図３および４に関連して上記で説明したように、コンピューティングシステム３０２内のキーマッピング層３０３４またはアプリケーション制御部３０２８内において、その一部または全部が実行されてもよい。
【００７４】
ステップ５０２は、１以上の入力装置を介して生成可能な入力イベントの第１セットを、ソフトウェアアプリケーションによって認識される入力イベントの第２セットに関連付けるキーマップを検索する。ステップ５０２の一実施態様では、（ｉ）入力イベントの第１セットは、ソフトウェアアプリケーションによって認識されず、または（ｉｉ）入力イベントの第１セットに関連付けられている機能またはソフトウェア応答（ソフトウェアアプリケーションに対応するソフトウェアコードによる）は、入力イベントの第２セットに関連付けられている機能またはソフトウェア応答（ソフトウェアアプリケーションに対応するソフトウェアコードによる）とは異なる。一実施態様では、ステップ５０２におけるキーマップは、キーマッピング層３０３４内のキーマッピング制御部３０３６によって、キーマップデータベースから検索される。
【００７５】
ステップ５０４は、入力装置の第１セット内の入力装置から、入力イベントの第１セット内の第１の入力イベントを特定する第１のデータ信号もしくは通信、または第１の入力イベントに関連する第１のデータ信号または通信を受信するステップを備える。一実施態様では、ステップ５０４のデータ信号は、キーマッピング層３０３４内のキーマッピング制御部３０３６で受信される。
【００７６】
ステップ５０６は、入力イベントの第２セットのうち、第１の入力イベントにマッピングされた第２の入力イベントを検索されたキーマップに基づいて特定する。ステップ５０６におけるマッピングは、キーマッピング層３０３４内のキーマッピング制御部３０３６で実行されてもよい。
【００７７】
ステップ５０８は、第２の入力イベントを特定する第２のデータ信号、または当該第２の入力イベントに関連する第２のデータ信号を生成して送信する。一実施態様では、生成された第２のデータ信号は、キーマッピング制御部３０３６から、および／または、アプリケーション制御部３０２８に対して、特に、グラフィックス制御部３０３０またはオーディオ制御部３０３２、またはアプリケーション制御部３０２８内の任意の他の状態制御部に対して、送信されてもよい。生成された第２のデータ信号は、ソフトウェアアプリケーション（またはソフトウェアアプリケーションに対応するソフトウェアコード）によって第２の入力イベントに対応するものとして認識可能である。
【００７８】
その後のステップ５１０は、第２のデータ信号に基づいて、ソフトウェアアプリケーション、または、ソフトウェアアプリケーションによって制御または関連付けられた任意の装置（例えば、ディスプレイ、スピーカ、ヘッドフォン、任意の視覚フィードバック装置、音声フィードバック装置、照明装置、触覚（ｔａｃｔｉｌｅ）フィードバック装置、触知（ｈａｐｔｉｃ）フィードバック装置、嗅覚フィードバック装置、またはその他の感覚（ｓｅｎｓｏｒｙ）フィードバック装置）における状態変更を実行するステップを備える。ソフトウェアアプリケーションまたは装置の状態変更は、アプリケーション制御部３０２８を介して、または、グラフィックス制御部３０３０、オーディオ制御部３０３２、またはアプリケーション制御部３０２８内の他の任意の状態制御部を介して実行されてもよい。
【００７９】
特定の実施態様では、図５の方法は、図２に示すタイプのアーキテクチャ（すなわち、ホストオペレーティングシステム内で仮想マシンとして実行中のゲストオペレーティングシステム上で実行するように構成されたアプリケーションソフトウェアの実行を可能にするコンピュータにより実現されるアーキテクチャ）を有するコンピューティングシステム内に実装される。そのような一実施態様では、ステップ５０２で検索されたキーマップは、（ｉ）ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムの仮想インスタンス内で実行されるソフトウェアアプリケーションによって認識される入力イベントの第２セットに関連付けるか、または（ｉｉ）ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムの仮想インスタンスのゲストオペレーティングシステムカーネル内のハードウェア装置ドライバ（複数可）によって認識される入力イベントの第２セットに関連付けるか、または（ｉｉｉ）、ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ゲストオペレーティングシステムによって認識される入力イベントの第２セットに関連付ける。ある実施態様では、入力イベントの第１セットは、ゲストオペレーティングシステムの仮想インスタンス内で実行されるソフトウェアアプリケーション、ゲストオペレーティングシステムカーネル内のハードウェア装置ドライバ（複数可）、またはゲストオペレーティングシステムのうちの１以上によって認識されないことがさらに理解されるであろう。
【００８０】
図６は、入力キーマップオーバレイを生成し、ソフトウェアアプリケーション／ゲームアプリケーションによって生成された１以上の表示画面上に、現在のキーマップ、または図５に関連して記載した方法によって特定のアプリケーション関連機能に関連付けられたキーまたは入力制御に関する１以上の視覚的表示を重ね合わせる方法を示す図である。
【００８１】
各種の実施態様では、以下に説明する方法ステップの１以上は、図３および図４に関連して上述したように、コンピューティングシステム３０２内のキーマッピング層３０３４内、または視覚オーバレイ制御部３０３８内、またはアプリケーション制御部３０２８内で、その一部または全部が実行されてもよい。
【００８２】
ステップ６０２は、１以上の入力装置により生成可能な入力イベントの第１セットを、ソフトウェアアプリケーションによって認識される入力イベントの第２セットに関連付けるキーマップを検索する。ステップ６０２の一実施態様では、（ｉ）入力イベントの第１セットはソフトウェアアプリケーションによって認識されず、または（ｉｉ）ソフトウェアに対応するソフトウェアコードによって入力イベントの第１セットに関連付けられている機能またはソフトウェアアプリケーション応答は、ソフトウェアアプリケーションに対応するソフトウェアコードによって入力イベントの第２セットに関連付けられている機能またはソフトウェアアプリケーション応答とは異なる。一実施態様では、ステップ６０２のキーマップは、キーマッピング層３０３４内のキーマッピング制御部３０３６が検索する。
【００８３】
ステップ６０４は、ソフトウェアアプリケーション（またはソフトウェアアプリケーションに関連付けられたソフトウェアコード）によって制御される表示画面上に、（ｉ）ソフトウェアアプリケーションの状態によって定義、またはソフトウェアアプリケーションの状態に基づいて選択されるグラフィックオブジェクトの第１セットと、（ｉｉ）グラフィックオブジェクトの第１セットのうち１以上のグラフィックオブジェクトにオーバレイされたグラフィックオブジェクトの第２セットと、を含む表示を生成する。ここで、グラフィックオブジェクトの第２セットのうちの１以上のグラフィックオブジェクトは、入力イベントの第１セットのうちの１以上のグラフィックオブジェクトに対応する。
【００８４】
ステップ６０４の一実施態様では、グラフィックオブジェクトの第２セットは、現在のキーマップから検索された１以上のデータ要素の表象である。または、キー、もしくは、入力イベントの第１セット内の入力イベントを生成可能な（そしてステップ６０２で検索されたキーマップを介してソフトウェアアプリケーション機能に関連付けられた）入力制御の、１以上の視覚的表示（複数可）もしくは表象（複数可）である。前述の例によれば、タッチスクリーンの定義された領域での（タッチスクリーンまたはタッチパッド上での）タッチイベントの検出をプレイヤーのアバターが特定の方向に移動するための指示としてアプリケーションコードが解釈し、ステップ６０２で検索されたキーマップが特定のキーボードキーを同じタッチイベントにマッピングしたゲームアプリケーションにおいては、ステップ６０４では、タッチイベントを開始する目的でアプリケーションコードによって定義された表示画面の領域に、または当該領域の近傍に、または当該領域に対して相対的に定義された位置に、指定されたキーボードキーに対応する文字をオーバレイさせる結果となってもよい。好ましくは、ゲーム機能の一部として、表示画面上の、ゲーミングアプリケーションによってレンダリングされた１以上のグラフィックオブジェクト上に文字をオーバレイさせてもよい。
【００８５】
そのようなオーバレイを提供するための図６の方法を実行することによって、ソフトウェアアプリケーションを制御するユーザは、ステップ６０２で検索したキーマップに基づいてアクティブ化されたキー／制御への視覚的なマップを受け取り、これらのキーを使用して特定のソフトウェアアプリケーションイベントまたは制御命令を開始することができる。
【００８６】
特定の実施態様では、図６の方法は、図２に示されるタイプのアーキテクチャ（すなわち、ホストオペレーティングシステム内で仮想マシンとして実行中のゲストオペレーティングシステムで実行するように構成されたアプリケーションソフトウェアの実行を可能にするコンピュータで実現されるアーキテクチャ）を有するコンピューティングシステム内で実行される。そのような一実施態様では、ステップ６０２（ｉ）で検索されたキーマップは、ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムの仮想インスタンス内で実行中のソフトウェアアプリケーションによって認識される入力イベントの第２セット関連付けるか、または（ｉｉ）ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムの仮想インスタンスのゲストオペレーティングシステムカーネル内のハードウェア装置ドライバ（複数可）によって認識される入力イベントの第２セットと関連付けるか、または（ｉｉｉ）ホストオペレーティングシステムのハードウェア装置ドライバ（複数可）によって認識可能な入力イベントの第１セットを、ゲストオペレーティングシステムによって認識される入力イベントの第２セットと関連付ける。さらに、ある実施態様では、入力イベントの第１セットは、ゲストオペレーティングシステムの仮想インスタンス内で実行中の１以上のソフトウェアアプリケーション、ホストオペレーティングシステム内でインスタンス化されたゲストオペレーティングシステムの仮想インスタンスのゲストオペレーティングシステムカーネル内のハードウェア装置ドライバ（複数可）、またはゲストオペレーティングシステム、のうちの１以上によって認識されないことがさらに理解されよう。
【００８７】
図７は、本発明の教示による適応キーマッピングの方法を示す。当該方法は、上記に詳述したキーマップ実装および／またはキーマップオーバレイを目的として、複数のキーマップ／キーマッピングプロファイルの中から特定のキーマップまたはキーマッピングプロファイルをイベントまたはパラメータに基づいて選択する。
【００８８】
ステップ７０２は、ソフトウェアアプリケーション、またはソフトウェアアプリケーションが実行されているコンピューティングシステムもしくはコンピューティングシステム環境に関連付けられた、ハードウェアパラメータ状態もしくはソフトウェアパラメータ状態、またはハードウェアパラメータ状態変化もしくはソフトウェアパラメータ状態変化を検出する。一実施態様では、パラメータ状態またはパラメータ状態変化は、図４のキーマッピング層３０３４内の状態検出部３０４０によって検出されてもよい。ステップ７０２で検出されるパラメータの状態または状態変化は、キーマップの選択、キーマップの破棄、またはキーマップの変更を目的として適切であると予め定められた任意の認識可能または検出可能な状態または状態変化を含んでもよいことが理解されよう。第１のキーマップから第２のキーマップへの切り替えを開始する目的で使用され得る例示的な状態変化には、グラフィック状態／視覚表示状態、オーディオ状態、一時的／非一時的メモリ（例えば、ＲＡＭ上または永久記憶装置上）に記憶されたデータの状態、ネットワークを介して受信されたデータの状態、ハードウェア装置またはクラウドから受信された入力の状態、またはソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境の状態、のうちの１以上において検出された変化が含まれる。
【００８９】
その後のステップ７０４は、キーマップのセットの中から、入力装置で検出された入力イベントを、ソフトウェアアプリケーションによって認識可能な入力イベントに翻訳するように構成されたキーマップを選択するステップである。この選択は、検出されたパラメータ状態またはパラメータ状態変化に基づく。一方の側ではパラメータ状態またはパラメータ状態の変化と、そのようなパラメータ状態またはパラメータ状態の変化の検出に応じて選択されるキーマップと、の間の関連付け（複数可）は、事前に定められるか、またはルールベースであってもよいことが理解されよう。その後、図５の方法ステップにしたがって、選択されたキーマップを実行してキーマッピングを行ってもよい。
【００９０】
図７の方法により、第１の状態または第１の状態変化の検出、または、第１のパラメータまたはパラメータの第１セットの検出に応じて、第１のキーマップ（すなわち、ユーザ入力とソフトウェアアプリケーション命令／イベントとの間のキーマッピング関連付けの第１セット）を実行し、第２の状態または第２の状態変化の検出、または、第２のパラメータまたはパラメータの第２セットの検出に応じて、第２のキーマップ（すなわち、ユーザ入力とソフトウェアアプリケーション命令／イベントとの間のキーマッピング関連付けの第２セット）を実行することが可能になる。
【００９１】
ある実施態様では、適応的に選択されて実装される特定のキーマップを表示または示すために、図７の方法にかかる適応キーマッピングは、図６の方法にかかる適応視覚オーバレイとともに実行してもよい。特定の実施態様では、選択または適応的な選択に利用可能な、キーマッピングプロファイルの１以上は、ひとつの入力イベントが、実行中のソフトウェアアプリケーション内の複数の命令またはイベントを実行させるように定義され得る１対多の機能（すなわち、マクロ機能）を実装するキーマップを含んでもよい。
【００９２】
図７の方法の実施態様では、本発明は、図２に示されるタイプのアーキテクチャを有するコンピューティングシステム（すなわち、ゲストオペレーティングシステムで実行するように構成されたアプリケーションソフトウェアのホストオペレーティングシステム内での実行を可能にするコンピュータによって実現されるアーキテクチャ）に実装されてもよい。図７の方法の実行を含むそのような実施態様では、
●グラフィック状態または視覚表示状態に基づくキーマップの切り替えにおいては、（ｉ）予め定められた表示画面（複数可）、（ｉｉ）画面に表示された予め定められたグラフィックオブジェクト、または（ｉｉｉ）定義された一連の条件を満たす方法で表示される予め定められたグラフィックオブジェクトの組み合わせのいずれかの検出に応じて特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、上記の１以上の検出は、
〇仮想マシン２１４内のアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内の、ゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、または
〇ホストオペレーティングシステムハードウェア装置ドライバ２１２から、ホストオペレーティングシステムアプリケーションソフトウェア２１０で、
受信したデータ、要求（複数可）、または命令（複数可）に基づいてもよい。
●オーディオ状態に基づくキーマップの切り替えにおいては、アプリケーションプログラムによってオーディオ制御部またはオーディオ装置ドライバに対して（またはその逆に）通信される予め定められた音響データまたは命令または要求の検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、上記の１以上の検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内の、ゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、または
〇ホストオペレーティングシステムハードウェア装置ドライバ２１２からのホストオペレーティングシステムアプリケーションソフトウェア２１０で、
受信したデータ、要求（複数可）、または命令（複数可）に基づいてもよい。
●ディスク上のゲームデータの状態に基づくキーマップの切り替えにおいては、ディスクに記憶されたデータパラメータから検索された１以上のソフトウェアアプリケーションパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介して、ホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
●ネットワークトラフィックの状態に基づくキーマップの切り替えにおいては、ネットワーク経由で受信したデータパラメータから検索された１以上のソフトウェアアプリケーションパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介してホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
●クラウドから受信した入力の状態に基づくキーマップの切り替えにおいては、ユーザまたはソフトウェアアプリケーションが関与する複数のセッションにわたって収集されたセッションデータの分析に基づいて生成されクラウドサーバに記憶された１以上のデータパラメータの検出に応じて、特定のキーマップ／キーマッププロファイルを選択してもよい。ここで、前記ソフトウェアパラメータの検出は、
〇仮想マシン２１４におけるアプリケーションプログラム層２１４２内で実行中のアプリケーションプログラムから、仮想マシン２１４内のゲストオペレーティングシステムアプリケーションフレームワーク層２１４４、ゲストオペレーティングシステムライブラリ層２１４６、もしくはゲストオペレーティングシステムハードウェア抽象化層２１４８のいずれかで、または
〇仮想マシン２１４とホストオペレーティングシステムアプリケーションソフトウェア２１０との間に確立されたデータチャネルを介して、ホストオペレーティングシステム２０８で、
受信したデータに基づいてもよい。
【００９３】
図８は、本発明を実施するための例示的なコンピュータシステム８０２を示している。
【００９４】
例示のシステムは、１以上のプロセッサ８０４および少なくとも１のメモリ８０６を含むコンピュータシステム８０２で構成される。プロセッサ８０４は、プログラム命令を実行するように構成される。プロセッサ８０４は、現実のプロセッサまたは仮想プロセッサのいずれでもよい。コンピュータシステム８０２は、記載された実施態様の使用範囲または機能に関していかなる限定を示唆するものではないことが理解されよう。コンピュータシステム８０２は、汎用コンピュータ、プログラムされたマイクロプロセッサ、マイクロ制御部、集積回路、および本発明の方法を構成するステップを実行可能な他の装置または装置の配置、のうちの１つ以上を含んでもよいが、これらに限定されない。本発明によるコンピュータシステム８０２の例示的な実施態様は、１以上のサーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、携帯電話、モバイル通信装置、タブレット、ファブレット、およびパーソナルデジタルアシスタントを含んでもよい。本発明の一実施態様では、メモリ８０６は、本発明の各種の実施態様を実行するためのソフトウェアを記憶してもよい。コンピュータシステム８０２は、追加の構成要素を有してもよい。例えば、コンピュータシステム８０２は、１以上の通信チャネル８０８、１以上の入力装置８１０、１以上の出力装置８１２、およびストレージ８１４を含むことができる。バス、制御部、またはネットワークなどの相互接続メカニズム（図示せず）が、コンピュータシステム８０２の各構成要素を相互に接続する。本発明の各実施態様では、オペレーティングシステムソフトウェア（図示せず）は、プロセッサ８０４を使用してコンピュータシステム８０２内で実行される各種ソフトウェアのための動作環境を提供し、コンピュータシステム８０２の各構成要素の様々な機能を管理する。
【００９５】
通信チャネル（複数可）８０８は、通信媒体を介した各種の他のコンピューティングエンティティへの通信を可能にする。通信媒体は、プログラム命令などの情報または他のデータを通信媒体に提供する。通信媒体には、電気伝送媒体、光学伝送媒体、ＲＦ伝送媒体、赤外線伝送媒体、音響伝送媒体、マイクロ波伝送媒体、Ｂｌｕｅｔｏｏｔｈまたは他の伝送媒体で実行される有線または無線の方法が含まれるが、これらに限定されない。
【００９６】
入力装置（複数可）８１０は、タッチスクリーン、キーボード、マウス、ペン、ジョイスティック、トラックボール、音声装置、スキャン装置、またはコンピュータシステム８０２に対して入力を提供可能な任意の他の装置を含み得るが、これらに限定されない。本発明の一実施態様では、入力装置８１０（複数可）は、アナログまたはデジタル形式のオーディオ入力を受け付けるサウンドカードまたは同様の装置であってもよい。出力装置（複数可）８１２は、ＣＲＴ、ＬＣＤ、ＬＥＤディスプレイ、またはサーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、携帯電話、モバイル通信装置、タブレット、ファブレットおよびパーソナルデジタルアシスタントのいずれかに関連付けられたその他の任意のディスプレイ上のユーザインタフェース、プリンタ、スピーカ、ＣＤ／ＤＶＤライタ、またはコンピュータシステム８０２からの出力を提供するその他の任意の装置を含んでもよいが、これらに限定されるものではない。
【００９７】
ストレージ８１４は、磁気ディスク、磁気テープ、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、任意の種類のコンピュータメモリ、磁気ストライプ、スマートカード、印刷されたバーコード、または、情報を記憶するために使用され、コンピュータシステム８０２がアクセス可能なその他の任意の一過性または非一過性の媒体を含んでもよいが、これらに限定されるものではない。本発明の各実施態様では、ストレージ８１４は、上述の実施態様のいずれかを実行するためのプログラム命令を含んでもよい。
【００９８】
本発明の一実施態様では、コンピュータシステム８０２は、分散型ネットワークの一部、または利用可能なクラウドリソースのセットの一部である。
【００９９】
本発明は、システム、方法、または、コンピュータ読み取り可能な記憶媒体や、離れた場所からプログラミング命令が通信されるコンピュータネットワークなどのコンピュータプログラム製品を含む数々の方法で実施することができる。
【０１００】
本発明は、コンピュータシステム８０２と共に使用するためのコンピュータプログラム製品として適切に具体化され得る。本明細書に記載の方法は、典型的には、コンピュータシステム８０２またはその他の任意の類似の装置によって実行されるプログラム命令のセットを含むコンピュータプログラム製品として実施される。プログラム命令のセットは、コンピュータ読み取り可能な記憶媒体（ストレージ８１４）、例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、フラッシュドライブまたはハードディスクなどの有形媒体に記憶された一連のコンピュータ読み取り可能なコードであってもよいし、または、モデムまたは他のインタフェース装置を介して、光またはアナログの通信チャネル（複数可）８０８を含むがこれらに限定されない有形媒体のいずれかを介して、コンピュータシステム８０２に対して送信可能な、一連のコンピュータ読み取り可能なコードであってもよい。コンピュータプログラム製品としての本発明の実施態様は、マイクロ波、赤外線、Ｂｌｕｅｔｏｏｔｈまたは他の伝送技術を含むがこれらに限定されない無線技術を用いた無形の形式であってもよい。これらの命令は、システムに事前にロードまたはＣＤ−ＲＯＭなどの記憶媒体に記録可能である。または、インターネットや移動電話網などのネットワークを介してダウンロード可能である。一連のコンピュータ読み取り可能な命令は、本明細書で前述した機能の全部または一部を実施してもよい。
【０１０１】
このように、本発明は、ソフトウェアアプリケーションが実行されているコンピューティング装置に通信可能に接続された１以上の制御部またはユーザインタフェースから受信した入力を、前記ソフトウェアアプリケーションが認識するように構成されている１以上の命令またはイベントにマッピングするための効果的な解決策を提供する。
【０１０２】
本発明の例示的な実施態様は本明細書に記載および例示するが、これらは単に例示的なものであることが理解されよう。添付の特許請求の範囲によって定義された本発明の精神および範囲から逸脱または阻害することなく、形態および詳細における各種の修正が行われ得ることは、当業者に理解されるであろう。さらに、本明細書に例示的に開示される本発明は、本明細書に具体的に開示されていない任意の要素が存在しない場合においても好適に実施可能であり、具体的に企図されている特定の実施態様では、本明細書に具体的に開示されていない任意の要素が存在しない場合においても実施されることが意図されている。
【図１】
2021528763.tif 000003
【図２】
2021528763.tif 000004
【図３】
2021528763.tif 000005
【図４】
2021528763.tif 000006
【図５】
2021528763.tif 000007
【図６】
2021528763.tif 000008
【図７】
2021528763.tif 000009
【図８】
2021528763.tif 000010
【手続補正書】
【提出日】令和3年2月22日(2021.2.22)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
ステップ５０４は、入力装置から、入力イベントの第１セット内の第１の入力イベントを特定する第１のデータ信号もしくは通信、または第１の入力イベントに関連する第１のデータ信号または通信を受信するステップを備える。一実施態様では、ステップ５０４のデータ信号は、キーマッピング層３０３４内のキーマッピング制御部３０３６で受信される。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションに入力をマッピングする方法であって、
１以上のプロセッサが、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを、前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ステップを実行する方法。
【請求項２】
前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する、
請求項１に記載の方法。
【請求項３】
前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかである、
請求項２に記載の方法。
【請求項４】
（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、
または、
（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる、
請求項１に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識される、
請求項１に記載の方法。
【請求項６】
前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される、
請求項５に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、
前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、
前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットと、
を生成する
ステップをさらに具備し、
前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す、
請求項１に記載の方法。
【請求項８】
前記グラフィックオブジェクトの第２セットは、
前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または
前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現、
である、請求項７に記載の方法。
【請求項９】
前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、
前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、
前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている、
請求項８に記載の方法。
【請求項１０】
前記受信したキーマップは、複数のキーマップから選択され、
前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、
前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである、
請求項１に記載の方法。
【請求項１１】
前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである、
請求項１０に記載の方法。
【請求項１２】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、
前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識され、
前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、
前記データ、前記要求、または前記命令は、
前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、
前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、
前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、
前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、
前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、
ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、
のいずれかにおいて、または、いずれかから受信される、
請求項１０に記載の方法。
【請求項１３】
ソフトウェアアプリケーションに入力をマッピングするためのシステムであって、
当該システムは、プロセッサによって実行されるコンピューティングシステムを具備し、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ように前記コンピューティングシステムが構成されている、システム。
【請求項１４】
前記ソフトウェアアプリケーションにおいて実行された前記状態変化が、前記ソフトウェアアプリケーションによって制御される出力装置における対応する状態変化をインスタンス化する、
請求項１３に記載のシステム。
【請求項１５】
前記出力装置は、ディスプレイ、スピーカ、ヘッドフォン、視覚フィードバック装置、音声フィードバック装置、照明装置、触覚フィードバック装置、触知フィードバック装置、または感覚フィードバック装置のいずれかである、
請求項１４に記載のシステム。
【請求項１６】
（ｉ）前記入力イベントの第１セットは前記ソフトウェアアプリケーションによって認識されない、
または、
（ｉｉ）前記ソフトウェアアプリケーションによる前記入力イベントの第１セットに関連付けられたソフトウェア応答は、前記ソフトウェアアプリケーションによる前記入力イベントの第２セットに関連付けられたソフトウェア応答とは異なる、
請求項１３に記載のシステム。
【請求項１７】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されたゲストオペレーティングシステムのインスタンス内で実行され、前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、かつ、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中の前記ソフトウェアアプリケーションによって認識可能であるか、または、
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識される、
請求項１３に記載のシステム。
【請求項１８】
前記第２のデータ信号は、前記ホストオペレーティングシステム内に実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアから、前記ゲストオペレーティングシステム内の前記ソフトウェアアプリケーションに送信される、
請求項１７に記載のシステム。
【請求項１９】
前記ソフトウェアアプリケーションによって制御されるディスプレイ上に、
前記ソフトウェアアプリケーションの状態により定められるか、または、前記状態に基づいて選択されたグラフィックオブジェクトの第１セットと、
前記グラフィックオブジェクトの第１セット内の１以上のグラフィックオブジェクトの上にオーバレイされる、グラフィックオブジェクトの第２セットと、
を生成し、
前記グラフィックオブジェクトの第２セットの１以上のグラフィックオブジェクトは、前記入力イベントの第１セット内の１以上の入力イベントを表す、
請求項１３に記載のシステム。
【請求項２０】
前記グラフィックオブジェクトの第２セットは、
前記受信したキーマップから検索された１以上のデータ要素の視覚的表現、または
前記入力イベントの第１セット内の入力イベントを生成可能な１以上の入力コントロールの視覚的表現、
である、請求項１９に記載のシステム。
【請求項２１】
前記入力イベントの第２セット内の１以上の入力イベントは、タッチスクリーンインタフェースを介して開始されるタッチプレスイベントであり、
前記グラフィックオブジェクトの第２セット内のグラフィックオブジェクトは、前記入力イベントの第２セット内のタッチプレスイベントを開始する目的で前記ソフトウェアアプリケーションによって定められた表示画面の領域に対して定められた位置において、前記タッチスクリーンディスプレイ上にオーバレイされており、
前記タッチプレスイベントは、前記受信したキーマップによって、前記グラフィックオブジェクトに対応する前記入力イベントの第１セット内の入力イベントに関連付けられている、
請求項２０に記載のシステム。
【請求項２２】
前記受信したキーマップは、複数のキーマップから選択され、
前記受信したキーマップは、１以上の予め定められた状態パラメータの検出に応じて選択され、
前記１以上の予め定められた状態パラメータはハードウェア状態パラメータまたはソフトウェア状態パラメータである、
請求項１３に記載のシステム。
【請求項２３】
前記検出される１以上の予め定義された状態パラメータは、視覚表示状態パラメータ、オーディオ状態パラメータ、メモリに記憶されたデータに対応する状態パラメータ、ネットワークを介して受信したデータに対応する状態パラメータ、ハードウェア装置から受信した入力に対応する状態パラメータ、または、前記ソフトウェアアプリケーションの実行に関連付けられた任意のコンピューティングシステムもしくはコンピューティングシステム環境に対応する状態パラメータ、のいずれかである、
請求項２２に記載のシステム。
【請求項２４】
前記ソフトウェアアプリケーションは、ホストオペレーティングシステム内に実装されているゲストオペレーティングシステムのインスタンス内で実行され、
前記ゲストオペレーティングシステムと前記ホストオペレーティングシステムとは互いに異なり、
前記入力イベントの第１セットは、前記ホストオペレーティングシステムと互換性があるハードウェア装置ドライバによって認識可能であり、前記ホストオペレーティングシステム内で実行され、
前記入力イベントの第２セットは、
（ｉ）前記ゲストオペレーティングシステムのインスタンス内で実行中のソフトウェアアプリケーションによって認識可能であるか、または
（ｉｉ）前記ゲストオペレーティングシステムのオペレーティングシステムカーネル内のハードウェア装置ドライバによって認識されるか、または、
（ｉｉｉ）前記ゲストオペレーティングシステムによって認識され、
前記検出された状態パラメータのうちの１以上は、データ、要求、または命令のいずれかに基づいて検出され、
前記データ、前記要求、または前記命令は、
前記ゲストオペレーティングシステムの前記インスタンス内のアプリケーションフレームワーク層、
前記ゲストオペレーティングシステムの前記インスタンス内のライブラリ層、
前記ゲストオペレーティングシステムの前記インスタンス内のハードウェア抽象化層、
前記ゲストオペレーティングシステムのアプリケーションプログラム層内で実行されるアプリケーションプログラム、
前記ゲストオペレーティングシステムの前記インスタンスと、前記ホストオペレーティングシステムで実装されている前記ゲストオペレーティングシステムの前記インスタンスをインスタンス化および制御するホストオペレーティングシステムアプリケーションソフトウェアと、の間に確立されたデータチャネルを介した前記ホストオペレーティングシステム、または、
ホストオペレーティングシステム装置ドライバからの前記ホストオペレーティングシステムアプリケーションソフトウェア、
のいずれかにおいて、または、いずれかから受信される、
請求項２２に記載のシステム。
【請求項２５】
ソフトウェアアプリケーションに入力をマッピングするプログラムであって、
プロセッサに、
入力装置を介して生成可能な入力イベントの第１セットを、前記入力イベントの第１セット内に含まれない１以上の入力イベントを含む入力イベントの第２セットであって、前記ソフトウェアアプリケーションによって認識される前記入力イベントの第２セットと関連付けるキーマップを受信し、
入力装置から、前記入力イベントの第１セット内の第１の入力イベントに関連付けられた第１のデータ信号を受信し、
前記受信したキーマップにより前記第１の入力イベントにマッピングされている、前記入力イベントの第２セット内の第２の入力イベントを前記受信したキーマップに基づいて特定し、
前記第２の入力イベントに対応するものとして前記ソフトウェアアプリケーションによって認識可能な第２のデータ信号を生成し、
前記第２のデータ信号に基づいて前記ソフトウェアアプリケーションにおける状態変化を実行する、
ステップを実行させるプログラム。
【国際調査報告】
2021528763.tif 000011