(57)【要約】  ハードウェアとソフトウェアとの汎用インタフェースを実現するシステム、方法、及びコンピュータ可読媒体であって、仮想ドライバによって、システムに通信可能に結合される１つ又は複数のハードウェア・デバイスで取り込まれる情報に少なくとも部分的に基づいて、ユーザ入力を判断するステップと、ユーザ入力に対応するコンテキストを識別するステップであって、識別されるコンテキストは、オペレーティング・システム又はオペレーティング・システム上で実行するアプリケーションの一方を含む、ステップと、識別されたコンテキストに少なくとも部分的に基づいて、ユーザ入力を透過レイヤ・コマンドに変換するステップであって、透過レイヤは、仮想ドライバと、オペレーティング・システム又はオペレーティング・システム上で実行するアプリケーションの１つ又は複数との間のインタフェースをとるように構成されるアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、ステップと、透過レイヤ上で透過レイヤ・コマンドを実行するステップであって、透過レイヤ・コマンドを実行することは、識別されたコンテキストのネイティブ・コマンドを実行させるように構成されている、ステップとを含む。
2020532007.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアとソフトウェアとの汎用インタフェースを実現する、１つ又は複数のコンピューティング・デバイスによって実行される方法であって、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つで実行する仮想ドライバにより、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するステップと、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって、前記ユーザ入力に対応するコンテキストを識別するステップであって、前記識別されたコンテキストは、オペレーティング・システム又は前記オペレーティング・システム上で実行するアプリケーションのうちの一方を含む、ステップと、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を、１つ又は複数の透過レイヤ・コマンドに変換するステップであって、透過レイヤは、前記仮想ドライバと、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数との間の、インタフェースをとるように構成された、アプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、ステップと、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって、前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行するステップであって、前記１つ又は複数の透過レイヤ・コマンドを実行することは、前記識別されたコンテキストの１つ又は複数のネイティブ・コマンドを実行させるように構成される、ステップと
を含む方法。
【請求項２】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報は、１つ又は複数の画像を含み、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するステップは、
前記１つ又は複数の画像内の、オブジェクトを認識するステップと、
前記１つ又は複数の画像内の、前記認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所を判断するステップと、
前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断するステップは、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記透過レイヤの透過ユーザ・インタフェース（ＵＩ）上の位置座標を判断するステップであって、前記透過ＵＩは、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数に対応する、基礎となるＵＩ上に重ねられている、ステップ
を含む、請求項２に記載の方法。
【請求項４】
前記ユーザ入力を、前記識別されたコンテキストに少なくとも部分的に基づいて、１つ又は複数の透過レイヤ・コマンドに変換するステップは、
透過レイヤ・コマンドを、前記位置座標及び前記識別されたコンテキストに少なくとも部分的に基づいて判断するステップであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標で動作を実行するように構成されている、ステップ
を含む、請求項３に記載の方法。
【請求項５】
前記少なくとも１つのネイティブ・コマンドは、
前記基礎となるＵＩ内の前記対応する位置座標に関連付けられたオブジェクトを選択するように構成された選択コマンド、又は
前記基礎となるＵＩ内の前記対応する位置座標にポインタを移動するように構成されたポインタ・コマンド
の１つ又は複数を含む、請求項４に記載の方法。
【請求項６】
前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標にある表示出力を変更するように構成されたグラフィック・コマンドを含み、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって、前記変更された表示出力を画像としてエクスポートするステップ
をさらに含む、請求項４に記載の方法。
【請求項７】
前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断するステップは、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、ジェスチャを識別するステップ
を含む、請求項２に記載の方法。
【請求項８】
前記ユーザ入力を、前記識別されたコンテキストに少なくとも部分的に基づいて、１つ又は複数の透過レイヤ・コマンドに変換するステップは、
透過レイヤ・コマンドを、前記識別されたジェスチャ及び前記識別されたコンテキストに少なくとも部分的に基づいて判断するステップであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別されたジェスチャに関連する動作を実行するように構成されている、ステップ
を含む、請求項７に記載の方法。
【請求項９】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報はサウンド情報を含み、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するステップは、
１つ又は複数の単語を識別するために、前記サウンド情報に対して音声認識を実行するステップ
を含む、請求項１に記載の方法。
【請求項１０】
前記ユーザ入力を、前記識別されたコンテキストに少なくとも部分的に基づいて、１つ又は複数の透過レイヤ・コマンドに変換するステップは、
透過レイヤ・コマンドを、前記識別された１つ又は複数の単語及び前記識別されたコンテキストに少なくとも部分的に基づいて判断するステップであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別された１つ又は複数の単語に関連する動作を実行するように構成されている、ステップ
を含む、請求項９に記載の方法。
【請求項１１】
前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行するステップは、前記１つ又は複数の透過レイヤ・コマンドの透過レイヤ・コマンドごとに、
前記透過レイヤ・コマンドの少なくとも１つのネイティブ・コマンドを識別するステップと、
前記識別されたコンテキストの、前記少なくとも１つのネイティブ・コマンドを実行するステップと
を含む、請求項１に記載の方法。
【請求項１２】
前記識別されたコンテキストの、前記少なくとも１つのネイティブ・コマンドを実行するステップは、
前記識別されたコンテキストが前記オペレーティング・システムを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、オペレーティング・システムＡＰＩを介して前記オペレーティング・システムに渡すステップ、又は
前記識別されたコンテキストが前記オペレーティング・システム上で実行する前記アプリケーションを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、アプリケーションＡＰＩを介して前記アプリケーションに渡すステップ
を含む、請求項１１に記載の方法。
【請求項１３】
ハードウェアとソフトウェアとの汎用インタフェースを実現する装置であって、前記装置は、
１つ又は複数のプロセッサと、
前記１つ又は複数のプロセッサの少なくとも１つに動作可能に結合され、そこに格納される命令を有する１つ又は複数のメモリと
を備え、前記命令は、前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、
前記装置で実行する仮想ドライバを使用して、前記装置に通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断することと、
前記ユーザ入力に対応するコンテキストを識別することであって、前記識別されたコンテキストは、オペレーティング・システム又は前記オペレーティング・システム上で実行するアプリケーションのうちの一方を含む、識別することと、
前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を、１つ又は複数の透過レイヤ・コマンドに変換することであって、前記透過レイヤは、前記仮想ドライバと、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数との間の、インタフェースをとるように構成された、アプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、変換することと、
前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行することであって、前記１つ又は複数の透過レイヤ・コマンドを実行することは、前記識別されたコンテキストの１つ又は複数のネイティブ・コマンドを実行させるように構成される、実行することと
を行わせる、装置。
【請求項１４】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報は、１つ又は複数の画像を含み、前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記装置に通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
前記１つ又は複数の画像内の、オブジェクトを認識することと、
前記１つ又は複数の画像内の、前記認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所を判断することと、
前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断することと
をさらに行わせる、請求項１３に記載の装置。
【請求項１５】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記透過レイヤの透過ユーザ・インタフェース（ＵＩ）上の位置座標を判断することであって、前記透過ＵＩは、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数に対応する、基礎となるＵＩ上に重ねられている、判断すること
をさらに行わせる、請求項１４に記載の装置。
【請求項１６】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
透過レイヤ・コマンドを、前記位置座標及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標で動作を実行するように構成されている、判断すること
をさらに行わせる、請求項１５に記載の装置。
【請求項１７】
前記少なくとも１つのネイティブ・コマンドは、
前記基礎となるＵＩ内の前記対応する位置座標に関連付けられたオブジェクトを選択するように構成された選択コマンド、又は
前記基礎となるＵＩ内の前記対応する位置座標にポインタを移動するように構成されたポインタ・コマンド
の１つ又は複数を含む、請求項１６に記載の装置。
【請求項１８】
前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標にある表示出力を変更するように構成されたグラフィック・コマンドを含み、前記１つ又は複数のメモリの少なくとも１つは、メモリ上に格納される命令をさらに有し、前記命令は、前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、
前記変更された表示出力を画像としてエクスポートすること
を行わせる、請求項１６に記載の装置。
【請求項１９】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、ジェスチャを識別すること
をさらに行わせる、請求項１４に記載の装置。
【請求項２０】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
透過レイヤ・コマンドを、前記識別されたジェスチャ及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別されたジェスチャに関連する動作を実行するように構成されている、判断すること
をさらに行わせる、請求項１９に記載の装置。
【請求項２１】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報は、サウンド情報を含み、前記命令は、前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記装置に通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断させ、前記１つ又は複数のプロセッサの少なくとも１つに、
１つ又は複数の単語を識別するために、前記サウンド情報に対して音声認識を実行すること
をさらに行わせる、請求項１３に記載の装置。
【請求項２２】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
透過レイヤ・コマンドを、前記識別された１つ又は複数の単語及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別された１つ又は複数の単語に関連する動作を実行するように構成されている、判断すること
をさらに行わせる、請求項２１に記載の装置。
【請求項２３】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、前記１つ又は複数の透過レイヤ・コマンドの透過レイヤ・コマンドごとに、
前記透過レイヤ・コマンドの少なくとも１つのネイティブ・コマンドを識別することと、
前記識別されたコンテキストの前記少なくとも１つのネイティブ・コマンドを実行することと
をさらに行わせる、請求項１３に記載の装置。
【請求項２４】
前記１つ又は複数のプロセッサの少なくとも１つによって実行されると、前記１つ又は複数のプロセッサの少なくとも１つに、前記識別されたコンテキストの前記少なくとも１つのネイティブ・コマンドを実行させる前記命令は、前記１つ又は複数のプロセッサの少なくとも１つに、
前記識別されたコンテキストが前記オペレーティング・システムを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、オペレーティング・システムＡＰＩを介して前記オペレーティング・システムに渡すこと、又は
前記識別されたコンテキストが前記オペレーティング・システム上で実行する前記アプリケーションを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、アプリケーションＡＰＩを介して前記アプリケーションに渡すこと
をさらに行わせる、請求項２３に記載の装置。
【請求項２５】
コンピュータ可読命令を格納する、少なくとも１つの非一時的コンピュータ可読媒体であって、前記命令は、１つ又は複数のコンピューティング・デバイスによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つで実行する仮想ドライバを使用して、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断することと、
前記ユーザ入力に対応するコンテキストを識別することであって、前記識別されたコンテキストは、オペレーティング・システム又は前記オペレーティング・システム上で実行するアプリケーションのうちの一方を含む、識別することと、
前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を、１つ又は複数の透過レイヤ・コマンドに変換することであって、前記透過レイヤは、前記仮想ドライバと、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数との間の、インタフェースをとるように構成された、アプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、変換することと、
前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行することであって、前記１つ又は複数の透過レイヤ・コマンドを実行することは、前記識別されたコンテキストの１つ又は複数のネイティブ・コマンドを実行させるように構成される、実行することと
を行わせる、少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２６】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報は、１つ又は複数の画像を含み、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記１つ又は複数の画像内の、オブジェクトを認識することと、
前記１つ又は複数の画像内の、前記認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所を判断することと、
前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断することと
をさらに行わせる、請求項２５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２７】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記透過レイヤの透過ユーザ・インタフェース（ＵＩ）上の位置座標を判断することであって、前記透過ＵＩは、前記オペレーティング・システム又は前記オペレーティング・システム上で実行する前記アプリケーションの１つ又は複数に対応する、基礎となるＵＩ上に重ねられている、判断すること
をさらに行わせる、請求項２６に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２８】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
透過レイヤ・コマンドを、前記位置座標及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標で動作を実行するように構成されている、判断すること
をさらに行わせる、請求項２７に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項２９】
前記少なくとも１つのネイティブ・コマンドは、
前記基礎となるＵＩ内の前記対応する位置座標に関連付けられたオブジェクトを選択するように構成された選択コマンド、又は
前記基礎となるＵＩ内の前記対応する位置座標にポインタを移動するように構成されたポインタ・コマンド
の１つ又は複数を含む、請求項２８に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３０】
前記少なくとも１つのネイティブ・コマンドは、前記基礎となるＵＩ内の前記対応する位置座標にある表示出力を変更するように構成されたグラフィック・コマンドを含み、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記変更された表示出力を画像としてエクスポートすること
を行わせるコンピュータ可読命令をさらに格納する、請求項２８に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３１】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記認識されたオブジェクトの前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、前記ユーザ入力を判断させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記１つ又は複数の向き及び前記１つ又は複数の場所に少なくとも部分的に基づいて、ジェスチャを識別すること
をさらに行わせる、請求項２６に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３２】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
透過レイヤ・コマンドを、前記識別されたジェスチャ及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別されたジェスチャに関連する動作を実行するように構成されている、判断すること
をさらに行わせる、請求項３１に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３３】
前記１つ又は複数のハードウェア・デバイスによって取り込まれた前記情報は、サウンド情報を含み、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
１つ又は複数の単語を識別するために、前記サウンド情報に対して音声認識を実行すること
をさらに行わせる、請求項２５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３４】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記識別されたコンテキストに少なくとも部分的に基づいて、前記ユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
透過レイヤ・コマンドを、前記識別された１つ又は複数の単語及び前記識別されたコンテキストに少なくとも部分的に基づいて判断することであって、前記透過レイヤ・コマンドは、前記識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含み、前記少なくとも１つのネイティブ・コマンドは、前記識別されたコンテキストの前記識別された１つ又は複数の単語に関連する動作を実行するように構成されている、判断すること
をさらに行わせる、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３５】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記透過レイヤ上で前記１つ又は複数の透過レイヤ・コマンドを実行させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記１つ又は複数の透過レイヤ・コマンドの透過レイヤ・コマンドごとに、
前記透過レイヤ・コマンドの少なくとも１つのネイティブ・コマンドを識別することと、
前記識別されたコンテキストの前記少なくとも１つのネイティブ・コマンドを実行することと
をさらに行わせる、請求項２５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３６】
前記１つ又は複数のコンピューティング・デバイスの少なくとも１つによって実行されると、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、前記識別されたコンテキストの前記少なくとも１つのネイティブ・コマンドを実行させる前記命令は、前記１つ又は複数のコンピューティング・デバイスの少なくとも１つに、
前記識別されたコンテキストが前記オペレーティング・システムを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、オペレーティング・システムＡＰＩを介して前記オペレーティング・システムに渡すこと、又は
前記識別されたコンテキストが前記オペレーティング・システム上で実行する前記アプリケーションを含む場合、前記少なくとも１つのネイティブ・コマンドを、入力として、アプリケーションＡＰＩを介して前記アプリケーションに渡すこと
をさらに行わせる、請求項３５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
オペレーティング・システム及びオペレーティング・システム内で実行するアプリケーションは、しばしば外部のハードウェア・デバイスを使用して、ユーザがプログラムに入力を与えることを可能にし、ユーザに出力を提供する。外部のハードウェア・デバイスの一般的な実例には、キーボード、コンピュータ・マウス、マイク、及び外部スピーカが含まれる。こうした外部のハードウェア・デバイスは、特定のハードウェア・デバイスによって使用されるハードウェア・コマンドと、オペレーティング・システムとの間のインタフェースとなるように構成された専用のソフトウェア・プログラムであるドライバを使用して、オペレーティング・システムとインタフェースをとる。
【０００２】
アプリケーションは、特定のハードウェア・デバイスとインタフェースするように設計される場合がある。たとえば、音声からテキストへの文書処理アプリケーションは、マイクを含むオーディオ・ヘッドセットとインタフェースするように設計され得る。この場合、アプリケーションは、具体的には、音声コマンドを受信し、音声認識を実行し、認識された単語をテキストのコンテンツに変換し、テキストのコンテンツを文書に出力するように構成する必要がある。通常、この機能は、アプリケーションのアプリケーション・プログラミング・インタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）で具現化されることになり、ＡＰＩは、様々なソフトウェア・コンポーネント間の定義された通信方法のセットである。音声認識アプリケーションの実例では、ＡＰＩには、アプリケーション・プログラムと、ハードウェア・デバイス（マイク）自体とのインタフェースを担当するドライバ上のソフトウェアとの間のインタフェースが含まれ得る。
【０００３】
専用ハードウェア・デバイスを使用する既存のソフトウェアによる１つの問題は、ハードウェア・デバイスを利用するために、アプリケーション又はオペレーティング・システム・ソフトウェア自体をカスタマイズし、特別に設計しなければならないことである。このカスタマイズは、ハードウェア・デバイスが、アプリケーションによってハードウェア・デバイス用に定義された範囲を超えることができず、ハードウェア・デバイスが使用されるように設計された特定のアプリケーションの外部のコンテキストでは、利用できないことを意味する。たとえば、音声からテキストへの単語処理アプリケーションのユーザは、他のアプリケーション・プログラム又はオペレーティング・システムが、マイクを介して受信した音声コマンドを使用するように特別に設計されていない限り、音声コマンドを使用して、オペレーティング・システム内のそうした他のアプリケーション・プログラム又は他のコンポーネントを操作できない。
【０００４】
図１に、ユーザ入力用に結合されたハードウェア・デバイスを使用するシステムの、既存のアーキテクチャの実例を示す。図１のオペレーティング・システム１００Ａは、実行するアプリケーション１０１Ａ及び１０２Ａを含み、実行するアプリケーションのそれぞれが、それら自体のＡＰＩ１０１Ｂ及び１０２Ｂをそれぞれ有する。オペレーティング・システム１００Ａも、それ自体のＡＰＩ１００Ｂ、並びにハードウェア・デバイス１００Ｄ、１０１Ｄ、及び１０２Ｄとインタフェースするように構成された専用ドライバ１００Ｃ、１０１Ｃ、及び１０２Ｃを有する。
【０００５】
図１に示すように、アプリケーションＡＰＩ１０１Ｂは、それ自体がハードウェア・デバイス１０１Ｄとインタフェースするドライバ１０１Ｃと、インタフェースするように構成される。同様に、アプリケーションＡＰＩ１０２Ｂは、それ自体がハードウェア・デバイス１０２Ｄとインタフェースするドライバ１０２Ｃと、インタフェースするように構成される。オペレーティング・システムのレベルでは、オペレーティング・システムＡＰＩ１００Ｂは、それ自体がハードウェア・デバイス１００Ｄとインタフェースするドライバ１００Ｃと、インタフェースするように構成される。
【０００６】
図１に示すシステムのアーキテクチャは、特定のアプリケーション又はオペレーティング・システムのコンテキストの外部のハードウェア・デバイスを利用するユーザの能力を制限する。たとえば、ユーザは、ハードウェア・デバイス１０１Ｄを利用してアプリケーション１０２Ａに入力を供給できず、ハードウェア・デバイス１０２Ｄを利用してアプリケーション１０１Ａ又はオペレーティング・システム１００Ａに入力を供給できない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、複数のソフトウェアのコンテキストでハードウェア・デバイスの利用を可能にする、ハードウェアとソフトウェアとのインタフェースの改良が必要である。
【図面の簡単な説明】
【０００８】
【図１】ユーザ入力用に結合されたハードウェア・デバイスを使用するシステムの、既存のアーキテクチャの実例を示す図である。
【図２】例示的な実施例による、ハードウェアとソフトウェアとの汎用インタフェースを利用するシステムのアーキテクチャを示す図である。
【図３】例示的な実施例による、ハードウェアとソフトウェアとの汎用インタフェースの実施態様の流れ図である。
【図４】例示的な実施例による、１つ又は複数のハードウェア・デバイスにより取り込まれた情報が、１つ又は複数の画像を含む場合の、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスにより取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するための流れ図である。
【図５Ａ】例示的な実施例による、オブジェクトを認識する実例を示す図である。
【図５Ｂ】例示的な実施例による、入力位置座標を判断する実例を示す図である。
【図６】例示的な実施例による、取り込まれる情報がサウンド情報である場合の、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスにより取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するための流れ図である。
【図７】例示的な実施例による、透過レイヤの一部であり得るツール・インタフェースを示す図である。
【図８】例示的な実施例による、システムの一部であり得るスタイラスの実例を示す図である。
【図９】例示的な実施例による、ユーザ入力に対応するコンテキストを識別するための流れ図である。
【図１０】例示的な実施例による、入力座標を使用してコンテキストを判断する実例を示す図である。
【図１１】例示的な実施例による、ユーザ入力を透過レイヤ・コマンドに変換する流れ図である。
【図１２Ａ】例示的な実施例による、選択モードにトグルで切り替えられた場合の、入力座標を受信する実例を示す図である。
【図１２Ｂ】例示的な実施例による、ポインティング・モードにトグルで切り替えられた場合の、入力座標を受信する実例を示す図である。
【図１２Ｃ】例示的な実施例による、描画モードにトグルで切り替えられた場合の、入力座標を受信する実例を示す図である。
【図１３】例示的な実施例による、入力音声データで識別された１つ又は複数の単語に基づいて判断される、透過レイヤ・コマンドの実例を示す図である。
【図１４】例示的な実施例による、入力音声データで識別された１つ又は複数の単語に基づいて判断される、透過レイヤ・コマンドの別の実例を示す図である。
【図１５】例示的な実施例による、透過レイヤ上で１つ又は複数の透過レイヤ・コマンドを実行するための流れ図である。
【図１６】例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するためのインタフェースの実例を示す図である。
【図１７】例示的な実施例による、描画インタフェース及び描画モードの様々なコンポーネント及びオプションを示す図である。
【図１８】例示的な実施例による、オブジェクトを認識するために使用され、ユーザのタッチ及びジェスチャを使用した入力の供給を可能にする、ビデオ・カメラ・ハードウェア・デバイスの較正及び設定インタフェースを示す図である。
【図１９】例示的な実施例による、ユーザがインタフェースの様々な態様をカスタマイズし、入力モードをトグルで切り替え、且つ他の変更を行うことを可能にする、一般設定インタフェースを示す図である。
【図２０】ハードウェアとソフトウェアとの汎用インタフェースを実現する方法を実行するために使用され得る、例示的なコンピュータ処理環境を示す図である。
【発明を実施するための形態】
【０００９】
方法、装置、及びコンピュータ可読媒体を、実例及び実施例として本明細書で説明しているが、当業者は、ハードウェアとソフトウェアとの汎用インタフェースを実現する方法、装置、及びコンピュータ可読媒体が、説明された実施例又は図面に限定されないことを認識されよう。図面及び説明は、開示された特定の形態に限定されることを意図しないことを理解されたい。それどころか、その意図は、添付の特許請求の範囲の精神及び範囲内にあるすべての修正形態、等価物、及び代替形態を網羅することである。本明細書で使用されるどんな見出しも、構成上の目的のためのものにすぎず、説明又は特許請求の範囲を限定することを意味しない。本明細書で使用される単語「ｃａｎ」は、強制的な意味（すなわち、「しなければならない」という意味）ではなく、許容的な意味（すなわち、その可能性があるという意味）で使用される。同様に、単語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」は、含むがこれに限定されないことを意味する。
【００１０】
出願人は、ハードウェア・デバイスに使用される、以前のハードウェアとソフトウェアとのインタフェースに関連する問題を解決する方法、装置、及びコンピュータ可読媒体を発見した。具体的には、出願人は、ユーザが様々なソフトウェアのコンテキストで通信可能に結合されたハードウェア・デバイスを利用できるようにする、ハードウェアとソフトウェアとの汎用インタフェースを開発した。開示する実施態様は、以下でより詳細に説明するように、専用の仮想ドライバ及び対応する透過レイヤを使用することにより、特定のハードウェア・デバイスとインタフェースをとるためにアプリケーション又はオペレーティング・システムをカスタム設計する必要性をなくす。
【００１１】
図２は、例示的な実施例による、ハードウェアとソフトウェアとの汎用インタフェースを利用するシステムのアーキテクチャを示す。図２に示すように、オペレーティング・システム２００Ａは、仮想ドライバ２０４と通信する透過レイヤ２０３を含む。以下でより詳細に説明するように、透過レイヤ２０３は、仮想ドライバと、オペレーティング・システム及び／又はオペレーティング・システム上で実行するアプリケーションとの間でインタフェースをとるように構成されたＡＰＩである。本実例では、透過レイヤ２０３は、仮想ドライバ２０４と、アプリケーション２０１ＡのＡＰＩ２０１Ｂ、アプリケーション２０２ＡのＡＰＩ２０２Ｂ、及びオペレーティング・システム２００Ａのオペレーティング・システムＡＰＩ２００Ｂとの間のインタフェースをとる。
【００１２】
透過レイヤ２０３は、オペレーティング・システム上で走るソフトウェア・プロセスの一部であってもよく、基礎となるユーザ・インタフェース（ＵＩ：ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）及び／又はユーザが対話することができる目に見えるＵＩ要素上に重ねられた透過ＵＩを含む、透過レイヤ自体のユーザ・インタフェース要素を有することができる。
【００１３】
仮想ドライバ２０４は、ハードウェア・デバイス２０６Ａ及び２０６Ｂとそれぞれインタフェースするドライバ２０５Ａ及び２０５Ｂをエミュレーションするように構成される。仮想ドライバは、どの仮想ドライバをエミュレーションするかを仮想ドライバに指示するユーザ入力を、たとえば、音声コマンド、ユーザ・インタフェース上で行われた選択、及び／又は結合されたウェブ・カメラの前でユーザが行うジェスチャの形で受信できる。たとえば、接続されたハードウェア・デバイスのそれぞれは、「リスニング」モードで動作でき、仮想ドライバ２０４のエミュレーションされるドライバのそれぞれは、特定のエミュレーション・モードに切り替えるための仮想ドライバへの信号として作用する、初期化信号を検出するように構成され得る。たとえば、ユーザが「音声コマンドを開始する」と言うことにより、マイクに対応するドライバがアクティブになり、新しい音声コマンドを受信できる。同様に、ユーザが特定のジェスチャを与えることにより、ウェブ・カメラに対応するドライバがアクティブになり、ジェスチャ入力又はタッチ入力を受信できる。
【００１４】
仮想ドライバは、それ自体がハードウェア・デバイス２０６Ｃと通信するネイティブ・ドライバ２０５Ｃなどのネイティブ・ドライバとインタフェースするようにも構成され得る。一実例では、ハードウェア・デバイス２０６Ｃは、オペレーティング・システムによってネイティブにサポートされているキーボード又はマウスなどの標準入力デバイスであり得る。
【００１５】
図２に示すシステムは、ユーザが、特定のアプリケーション又はオペレーティング・システムなどの様々なコンテキストで、アプリケーション又はオペレーティング・システムをハードウェア・デバイスとインタフェースをとるためにカスタマイズする必要なしに、結合されたどのハードウェア・デバイスでも利用できる、ハードウェアとソフトウェアとの汎用インタフェースを実現することができる。
【００１６】
たとえば、ハードウェア・デバイス２０６Ａは、ドライバ２０５Ａをエミュレーションする仮想ドライバ２０４によってその後に受信される情報を、取り込むことができる。仮想ドライバ２０４は、取り込まれた情報に基づいて、ユーザ入力を判断できる。たとえば、情報がユーザの手を動かす一連の画像である場合、仮想ドライバは、ユーザがジェスチャを実行したと判断できる。
【００１７】
識別されたコンテキスト（特定のアプリケーション又はオペレーティング・システムなど）に基づいて、ユーザ入力を透過レイヤ・コマンドに変換し、実行するために透過レイヤ２０３に送信できる。透過レイヤ・コマンドには、識別されたコンテキスト内のネイティブ・コマンドが含まれ得る。たとえば、識別されたコンテキストがアプリケーション２０１Ａである場合、ネイティブ・コマンドは、アプリケーション２０１ＡのアプリケーションＡＰＩ２０１Ｂと互換性のある形式である。透過レイヤ・コマンドを実行することは、この場合、識別されたコンテキストの１つ又は複数のネイティブ・コマンドを実行させるように構成され得る。これは、オペレーティング・システム２００Ａ上で実行するアプリケーションのそれぞれのＡＰＩ並びにオペレーティング・システムＡＰＩ２００Ｂとインタフェースする透過レイヤ２０３によって達成される。たとえば、ネイティブ・コマンドが新しいプログラムを起動するコマンドなどのオペレーティング・システム・コマンドである場合、透過レイヤ２０３は、実行するために、そのネイティブ・コマンドをオペレーティング・システムＡＰＩ２００Ｂに供給できる。
【００１８】
図２に示すように、図示するすべてのコンポーネント間で双方向通信する。これは、たとえば、透過レイヤ２０３で透過レイヤ・コマンドを実行すると、結果として、仮想ドライバ２０４及び接続されたハードウェア・デバイスの１つに情報が送信され得ることを意味する。たとえば、音声コマンドが入力として認識され、ネイティブ・コマンドを含む透過レイヤ・コマンドに変換され、透過レイヤによって実行された（その結果、識別されたコンテキストのネイティブ・コマンドが実行された）後、サウンド出力「コマンドが受信されました」を送信するため、信号が透過レイヤから（仮想ドライバを介して）スピーカへ送信され得る。
【００１９】
もちろん、図２に示すアーキテクチャは説明のみを目的としており、実行するアプリケーションの数、接続されるハードウェア・デバイスの数及び種類、ドライバの数、並びにエミュレーションされたドライバは、変わる場合があることを理解されたい。
【００２０】
図３は、例示的な実施例による、ハードウェアとソフトウェアとの汎用インタフェースの実施態様の流れ図を示す。
【００２１】
ステップ３０１で、システムと通信可能に結合された１つ又は複数のハードウェア・デバイスによって取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力が判断される。本明細書で使用するシステムは、本方法のステップを実行する１つ又は複数のコンピューティング・デバイス、本方法のステップを実行する１つ又は複数のプロセッサ及び１つ又は複数のメモリを備える装置、又は他の任意のコンピュータ処理システムを指すことができる。
【００２２】
ユーザ入力は、システム上で実行する仮想ドライバによって判断され得る。上記で論じたように、仮想ドライバは、他のハードウェア・ドライバをエミュレーションし、それにより取り込まれた情報をハードウェア・デバイスから受信するエミュレーション・モードで動作していてもよく、又はオプションで、特定のハードウェア・デバイスとインタフェースするように構成された１つ又は複数の他のハードウェア・ドライバから、取り込まれた情報を受信してもよい。
【００２３】
カメラ、ビデオ・カメラ、マイク、双方向通信できるヘッドセット、マウス、タッチパッド、トラックパッド、コントローラ、ゲーム・パッド、ジョイスティック、タッチ画面、加速度計及び／又は傾斜センサを備えるモーション・キャプチャ・デバイス、リモコン、スタイラス、又はこれらのデバイスの任意の組合せなど、様々なハードウェア・デバイスを利用することができる。もちろん、このハードウェア・デバイスのリストは実例として提供しているにすぎず、音声、画像、ビデオ、又はタッチ情報を検出するために利用できる任意のハードウェア・デバイスを利用できる。
【００２４】
ハードウェア・デバイスとシステムとの間の通信可能な結合は、様々な形態をとることができる。たとえば、ハードウェア・デバイスは、無線ネットワーク、ブルートゥース（登録商標）・プロトコル、無線周波数、赤外線信号を介して、且つ／又はユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）接続などの物理的接続によって、システムと通信できる。また通信には、無線通信と有線通信との両方が含まれ得る。たとえば、ハードウェア・デバイスは２つのコンポーネントを備えてもよく、そのうちの１つが無線で（ブルートゥース（登録商標）などを介して）、それ自体が有線接続（ＵＳＢなど）を介してシステムに接続するもう１つのコンポーネントに信号を送信する。本明細書で説明するシステムにしたがって、様々な通信技法を利用することができ、こうした実例は、限定することを意図しない。
【００２５】
１つ又は複数のハードウェア・デバイスによって取り込まれた情報は、１つ又は複数の画像を含む画像情報、ビデオのフレーム、サウンド情報、及び／又はタッチ情報など、どんな種類の情報でもあり得る。取り込まれた情報は、サウンド情報用の．ｗａｖ又は．ｍｐ３ファイル、画像用の．ｊｐｅｇファイル、タッチ情報用の数値座標など、どんな好適な形式でもあり得る。
【００２６】
本明細書で説明する技法は、たとえ表示デバイスが、タッチ信号又はタッチ・ベースのジェスチャを検出するどんなハードウェアも備えていない場合でも、任意のコンテキストで「タッチ」画面デバイスとして効果的に機能する任意の表示デバイスを可能にし得る。これについては以下でより詳細に説明するが、カメラ又はビデオ・カメラで取り込んだ画像を分析することにより達成できる。
【００２７】
図４は、１つ又は複数のハードウェア・デバイスにより取り込まれた情報が、１つ又は複数の画像を含む場合の、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスにより取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するための流れ図を示す。
【００２８】
ステップ４０１で、１つ又は複数の画像が受信される。これらの画像は、上記で論じたように、カメラ又はビデオ・カメラなどのハードウェア・デバイスで取り込むことができ、仮想ドライバで受信され得る。
【００２９】
ステップ４０２で、１つ又は複数の画像内のオブジェクトが認識される。オブジェクトは、たとえば、ユーザの手、指、又は他の身体部分であってもよい。オブジェクトはまた、スタイラス又はペンなどの専用デバイス、或いはシステムに通信可能に結合され、加速度計及び／又は傾斜センサを内蔵する動き追跡スタイラス／リモコンなどの専用ハードウェア・デバイスであってもよい。オブジェクトの認識は、仮想ドライバによって実行することができ、オブジェクトを使用して行われた較正ルーチンによるなど、以前のトレーニングに基づき得る。
【００３０】
図５Ａは、例示的な実施例による、オブジェクトを認識する実例を示す。図５Ａに示すように、画像５０１は、オブジェクト５０２として認識されたユーザの手を含む。もちろん、認識アルゴリズムは、指などの異なるオブジェクトを認識するように構成され得る。
【００３１】
図４に戻ると、ステップ４０３で、認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所が判断される。これは、様々なやり方で実現され得る。オブジェクトがハードウェア・デバイスではなく、手又は指などの身体部分である場合、オブジェクトを、カメラの既知の位置を基準点として使用して３次元座標系にマッピングし、オブジェクトの３次元座標、及びＸ、Ｙ、Ｚ軸に対する様々な角度を判断できる。オブジェクトがハードウェア・デバイスであり、且つ加速度計及び／又は傾斜センサなどの動き追跡ハードウェアを備える場合、オブジェクトの場所及び向きを判断するために、画像情報を加速度計及び／又は傾斜センサによって示される情報と組み合わせて使用することができる。
【００３２】
ステップ４０４で、認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所に少なくとも部分的に基づいて、ユーザ入力が判断される。これには、１つ又は複数の向き及び１つ又は複数の場所に少なくとも部分的に基づいて、透過レイヤの透過ユーザ・インタフェース（ＵＩ）上の位置座標を判断するステップが含まれ得る。透過ＵＩは、透過レイヤの一部であり、オペレーティング・システム及び／又はオペレーティング・システム上で実行する任意のアプリケーションに対応する、基礎となるＵＩ上に重ねられる。
【００３３】
図５Ｂは、オブジェクトがユーザの指である場合の、このステップの実例を示す。図５Ｂに示すように、表示デバイス５０３は、基礎となるＵＩ５０６、及び基礎となるＵＩ５０６の上に重ねられた透過ＵＩ５０７を含む。明確にするために、透過ＵＩ５０７はドットの陰影で示しているが、実際には透過ＵＩは、ユーザには見えない透明のレイヤであることを理解されたい。さらに、透過ＵＩ５０７は、基礎となるＵＩ５０６よりもわずかに小さいものとして示しているが、実際には透過ＵＩは、基礎となるＵＩと同じ画面の面積をカバーすることを理解されたい。
【００３４】
図５Ｂに示すように、オブジェクト（ユーザの指）の場所及び向きの情報は、表示デバイス５０３の平面上に線を投影し、交点５０５を判断するために使用される。カメラ５０４によって取り込まれた画像情報、及びカメラの下にある表示デバイス５０３の既知の場所を使用して、この投影を補助できる。図５Ｂに示すように、ユーザ入力は、交点５０５にある入力座標であると判断される。
【００３５】
以下でさらに論じるように、この入力に基づいて生成される実際の透過レイヤ・コマンドは、ユーザ設定及び／又は識別されたコンテキストに基づき得る。たとえば、コマンドは、点５０５の座標にあるオブジェクトを選択する、且つ／又は開く必要があることを示すタッチコマンドであり得る。このコマンドは、ポインタ（マウス・ポインタなど）をポイント５０５の座標に移動する必要があることを示すポインティング・コマンドでもあり得る。さらに、コマンドは、その位置でグラフィック出力を修正する（インタフェースに注釈を付けるため、又は要素を描画するため、など）、編集コマンドでもあり得る。
【００３６】
図５Ｂは、認識されるオブジェクト５０２が表示デバイス５０３から若干の距離にあるものとして示しているが、タッチ入力は距離に関係なく検出することができる。たとえば、ユーザが表示デバイス５０３に物理的に触れることができる場合、上記の技法は、やはり入力座標を判断する。その場合、オブジェクト５０２と交点との間の投影線は、単により短くなる。
【００３７】
もちろん、取り込まれた画像から判断できるユーザ入力の種類は、タッチ入力だけではない。認識されたオブジェクトの１つ又は複数の向き及び１つ又は複数の場所に少なくとも部分的に基づいて、ユーザ入力を判断するステップには、ジェスチャ入力を判断するステップが含まれ得る。具体的には、複数の画像にわたって認識されたオブジェクトの場所及び向きを分析して、スワイプ操作のジェスチャ、ピンチ操作のジェスチャ、及び／又は既知の若しくはカスタマイズされたジェスチャなど、対応するジェスチャを判断することができる。ユーザは、特定のコンテキスト及びそうしたコンテキスト内のコマンドにマッピングされるカスタムのジェスチャを認識するように、仮想ドライバを較正することができる。たとえば、ユーザは、オペレーティング・システムのコンテキストにマッピングされ、その結果、特定のアプリケーションを起動するネイティブのオペレーティング・システム・コマンドが実行される、カスタムのジェスチャを作り出すことができる。
【００３８】
上記で論じたように、図３のステップ３０１で１つ又は複数のハードウェア・デバイスによって取り込まれる情報には、マイクを使って取り込まれるサウンド情報も含まれ得る。図６は、取り込まれる情報がサウンド情報である場合の、システムに通信可能に結合された１つ又は複数のハードウェア・デバイスにより取り込まれた情報に少なくとも部分的に基づいて、ユーザ入力を判断するための流れ図を示す。以下で論じるように、サウンド情報に基づいて音声認識が実行され、ユーザ入力に対応する１つ又は複数の単語が識別される。
【００３９】
ステップ６０１で、サウンド・データが受信される。サウンド・データは、上記で論じたように、マイクなどのハードウェア・デバイスを使って取り込み、仮想ドライバで受信できる。ステップ６０２で、受信したサウンド・データをサウンド辞書と比較することができる。サウンド辞書には、コマンドの単語又はコマンドの修飾語など、１つ又は複数の認識される単語のサウンド・シグネチャが含まれ得る。ステップ６０３で、比較に基づいて、サウンド・データ内の１つ又は複数の単語が、ユーザ入力として識別される。次いで、識別された１つ又は複数の単語を、透過レイヤ・コマンドに変換し、透過レイヤに渡すことができる。
【００４０】
上記で論じたように、仮想ドライバによってエミュレーションされるドライバ、予測されるユーザ入力の種類、及びユーザ入力に基づいて生成されるコマンドはすべて、１つ又は複数の設定又は以前のユーザ入力に少なくとも部分的に基づいて判断され得る。
【００４１】
図７は、透過レイヤの一部でもあり得るツール・インタフェース７０１を示す。ツール・インタフェース７０１は、透過ＵＩとは異なり、ユーザの目に見え、仮想ドライバのエミュレーション・モード、ユーザ入力に基づいて生成されるネイティブ・コマンドを変更する様々なオプションを選択するか、又は追加機能を実行するために使用できる。
【００４２】
ボタン７０１Ａにより、ユーザは、ユーザ入力が、入力座標（ユーザの手又はスタイラス／リモコンを使ったユーザのスクリーニングへのタッチ（ｕｓｅｒ  ｔｏｕｃｈｉｎｇ  ｔｈｅ  ｓｃｒｅｅｎｉｎｇ）に基づく座標など）である場合、ユーザ・インタフェースをグラフィカルに修正するために使用される、描画ツールの種類を選択できる。様々な描画ツールには、様々なブラシ、色、ペン、蛍光ペンなどが含まれ得る。こうしたツールにより、様々なスタイル、太さ、色などをグラフィカルに変更できる。
【００４３】
ボタン７０１Ｂにより、ユーザ入力として入力座標を受信する場合、ユーザは、選択モード、ポインティング・モード、又は描画モード間を切り替えることができる。選択モードでは、入力座標を「タッチ」として処理し、その結果入力座標にあるオブジェクトを選択するか、又は開くことができる。ポインティング・モードでは、座標をポインタ（マウス・ポインタなど）の場所として処理することができ、ユーザは、マウスを効果的にエミュレーションできる。描画モードでは、座標を、ユーザ・インタフェースのグラフィカル出力を変更する位置として処理し、ユーザ・インタフェース上に描画した、又は書き込んだ有様を表示することができる。変更の内容は、ボタン７０１Ａを参照して論じたように、選択した描画ツールによって変わる。ボタン７０１Ｂは、画像入力及び／又は動き入力（動き追跡デバイスが使用される場合）を予測し、それに応じて適切なドライバをエミュレーションするように、仮想ドライバに通知することもできる。
【００４４】
ボタン７０１Ｃは、仮想ドライバに音声コマンドを予測するよう通知する。これにより、仮想ドライバは、図６に関して説明したように、結合されたマイクに対応するドライバをエミュレーションして、音声入力を受信し、音声入力を解析できる。
【００４５】
ボタン７０１Ｄは、透過レイヤの一部であり得る、そしてオペレーティング・システム内でアプリケーションを起動するために、又はアプリケーション内で特定のコマンドを起動するために使用できる、ランチャ・アプリケーションを開く。ランチャを使用して、カスタムの音声コマンド、カスタムのジェスチャ、ユーザ入力に関連付けられたアプリケーションのカスタムのネイティブ・コマンドなどの、透過レイヤのオプションのカスタマイズ、並びに／或いはハードウェア・デバイス及びユーザ入力の較正（音声較正、モーション・キャプチャ・デバイス較正、及び／又はオブジェクト認識較正など）もできる。
【００４６】
ボタン７０１Ｅを使用して、ユーザ・インタフェースのスクリーンショットを取り込み、スクリーンショットを画像としてエクスポートすることができる。これは、ボタン７０１Ｂの描画モード及び７０１Ａの描画ツールと組み合わせて使用できる。ユーザが特定のユーザ・インタフェースをマーク付けした（ｍａｒｋ  ｕｐ）後に、マーク付けしたバージョンを画像としてエクスポートできる。
【００４７】
ボタン７０１Ｆにより、グラフィックの編集も可能となり、ボタン７０１Ｆを使用して、ユーザがユーザ・インタフェース上で作成している図の色又は図の態様を変更することができる。ボタン７０１Ｂの描画モードと同様に、このボタンは、入力座標でのグラフィック変更の内容を変更する。
【００４８】
ボタン７０１Ｇは、ユーザ・インタフェース上の図をキャンセルする。このボタンを選択することにより、ユーザ・インタフェース上でグラフィカルにマーキングしたすべてが削除され、基礎となるＵＩは、ユーザが図を作成する前にあった状態にリセットされ得る。
【００４９】
ボタン７０１Ｈを使用して、ユーザが仮想ホワイトボード上に描画モードを使用して描画を作成するか又は書き込むことを可能にする、ホワイトボード・アプリケーションを起動できる。
【００５０】
ボタン７０１Ｉを使用して、オペレーティング・システムＵＩ又はアプリケーションＵＩに示されるオブジェクトなどのオブジェクトに、テキストのメモを追加できる。テキストのメモは、音声信号から解釈されるか、又はユーザが、キーボードを使用して打ち込むことができる。
【００５１】
ボタン７０１Ｊを使用して、ツール・インタフェース７０１を開閉することができる。閉じた場合、ツール・インタフェースは最小化されるか、又は基礎となるユーザ・インタフェースから完全に取り除かれ得る。
【００５２】
上記で論じたように、スタイラス又はリモコン・ハードウェア・デバイスは、本システムと共に、カメラ又はビデオ・カメラなどの他のハードウェア・デバイスと組み合わせて使用できる。図８は、本システムと共に使用できるスタイラス８０１の実例を示す。スタイラス８０１は、ブルートゥース（登録商標）などを介して、ハードウェア受信器８０２と通信できる。ハードウェア受信器は、ＵＳＢ８０２Ｂなどを介してコンピュータ・システムに接続でき、ハードウェア受信器を介してコンピュータ・システムに渡されるスタイラスからの信号を使用して、図７に示すツール・インタフェースと類似のメニュー８０３を制御し、且つメニュー８０３と対話できる。
【００５３】
図８に示すように、スタイラス８０１は、物理的ボタン８０１Ａを備えることができる。こうした物理的ボタン８０１を使用して、スタイラスの電源を入れ、メニュー８０３をナビゲートし、選択することができる。さらに、スタイラス８０１は、カメラによって画像に取り込まれ、仮想ドライバによって認識される、特徴的な先端８０１Ｂを備えることができる。これにより、描画モードにある場合、スタイラス８０１の描画及び編集のための使用を可能にすることができる。スタイラス８０１は、スタイラスを使用して入力座標又はジェスチャが供給されるときに、場所検出を補助するために、加速度計及び／又は傾斜センサなどの動き追跡ハードウェアも備えることもできる。さらに、ハードウェア受信器８０２は、押されるとユーザ・インタフェースで較正ユーティリティを起動できる、較正ボタン８０２Ａを備えることができる。これにより、スタイラスの較正が可能になる。
【００５４】
図３に戻ると、ステップ３０２で、ユーザ入力に対応するコンテキストが識別される。識別されたコンテキストは、オペレーティング・システム又はオペレーティング・システム上で実行するアプリケーションのうちの一方を含む。
【００５５】
図９は、例示的な実施例による、ユーザ入力に対応するコンテキストを識別するための流れ図を示す。図９に示すように、オペレーティング・システムのデータ９０１、アプリケーションのデータ９０２、及びユーザ入力データ９０３をすべて使用して、コンテキスト９０４を判断できる。
【００５６】
オペレーティング・システムのデータ９０１は、たとえば、オペレーティング・システムのアクティブ・ウィンドウに関する情報を含むことができる。たとえば、アクティブ・ウィンドウが電卓ウィンドウである場合、コンテキストは、電卓アプリケーションであると判断できる。同様に、アクティブ・ウィンドウがＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄウィンドウである場合、コンテキストは、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄアプリケーションであると判断できる。一方、アクティブ・ウィンドウがファイル・フォルダである場合、アクティブなコンテキストは、オペレーティング・システムであると判断できる。オペレーティング・システムのデータには、どのアプリケーションが現在実行中か、最後に起動されたアプリケーション、及びコンテキストを判断するのに使用できる他の任意のオペレーティング・システム情報などの、追加情報も含まれ得る。
【００５７】
アプリケーションのデータ９０２には、たとえば、実行中の１つ又は複数のアプリケーションに関する情報、及び／又は特別なアプリケーションを、特定の種類のユーザ入力にマッピングする情報が含まれ得る。たとえば、第１のアプリケーションが音声入力にマッピングされてもよく、それによって、音声コマンドが受信されるたびに、そのコンテキストは第１のアプリケーションであると自動的に判断される。別の実例では、特定のジェスチャを第２のアプリケーションに関連付けることができ、それによって、そのジェスチャが入力として受信されると、第２のアプリケーションが起動されるか、若しくは閉じられるか、又は第２のアプリケーション内での何らかの動作が実行される。
【００５８】
ユーザ入力９０３を使用して、様々なやり方でコンテキストを判断することもできる。上記で論じたように、特定の種類のユーザ入力が、特定のアプリケーションにマッピングされ得る。上記の実例では、音声入力は、最初のアプリケーションのコンテキストに関連付けられる。さらに、ユーザ入力の属性を使用してコンテキストを判断することもできる。ジェスチャ又は動きは、アプリケーション又はオペレーティング・システムにマッピングされ得る。音声コマンドの特定の単語も、アプリケーション又はオペレーティング・システムにマッピングされ得る。入力座標も、コンテキストを判断するために使用できる。たとえば、入力座標の場所にあるユーザ・インタフェースのウィンドウを判断することができ、そのウィンドウに対応するアプリケーションをコンテキストとして判断することができる。
【００５９】
図１０は、入力座標を使用してコンテキストを判断する実例を示す。図１０に示すように、表示デバイス１００１は、ユーザ・インタフェース１００２を表示している。カメラ１００４、及び基礎となるユーザ・インタフェース１００３の上に重ねられた透過レイヤ１００３も示す。ユーザは、スタイラス１０００を利用して、ユーザ・インタフェース１００２の位置１００５を指している。位置１００５は、アプリケーション１に対応するアプリケーション・ウィンドウ内にあるので、アプリケーション２、アプリケーション３、又はオペレーティング・システムではなく、アプリケーション１が、ユーザ入力に対するコンテキストであると判断され得る。
【００６０】
図３に戻ると、ステップ３０３で、ユーザ入力は、識別されたコンテキストに少なくとも部分的に基づいて、１つ又は複数の透過レイヤ・コマンドに変換される。上記で論じたように、透過レイヤは、仮想ドライバと、オペレーティング・システム及び／又はオペレーティング・システム上で実行するアプリケーションとの間でインタフェースをとるように構成されたアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。
【００６１】
図１１に、ユーザ入力を透過レイヤ・コマンドに変換するための流れ図を示す。図１１のステップ１１０４に示すように、透過レイヤ・コマンドは、識別されたコンテキスト１１０２及びユーザ入力１１０３に少なくとも部分的に基づいて判断され得る。透過レイヤ・コマンドには、１つ又は複数の対応するコンテキストで実行するように構成された、１つ又は複数のネイティブ・コマンドが含まれ得る。透過レイヤ・コマンドには、仮想ドライバ及びハードウェア・デバイスに送信される応答出力も含まれ得る。
【００６２】
識別されたコンテキスト１１０２を使用して、どの透過レイヤ・コマンドをユーザ入力にマッピングする必要があるかを判断できる。たとえば、識別されたコンテキストが「オペレーティング・システム」である場合、スワイプ・ジェスチャ入力を透過レイヤ・コマンドにマッピングすることができ、その結果ユーザ・インタフェースが、オペレーティング・システム内で現在開いているウィンドウをスクロールする（１つの開いているウィンドウを最小化し、次に開くウィンドウを最大化することによって）。或いは、識別されたコンテキストが「ウェブ・ブラウザ・アプリケーション」である場合、同じスワイプ・ジェスチャ入力を透過レイヤ・コマンドにマッピングすることができ、その結果ウェブ・ページがスクロールされる。
【００６３】
ユーザ入力は、１つ又は複数のコンテキスト内の特定のネイティブ・コマンドに具体的にマッピングされ、こうしたネイティブ・コマンドは、透過レイヤ・コマンドの一部であるので、ユーザ入力１１０３も透過レイヤ・コマンドを判断する。たとえば、音声コマンド「電子メールを開け」を特定のオペレーティング・システムのネイティブ・コマンドにマッピングして、電子メールアプリケーションＯｕｔｌｏｏｋを起動できる。認識された単語「電子メールを開け」を含む音声入力を受信すると、その結果、Ｏｕｔｌｏｏｋを起動するネイティブ・コマンドを含む透過レイヤ・コマンドが判断される。
【００６４】
図１１に示すように、透過レイヤ・コマンドは、１つ又は複数のユーザ設定１１０１及びＡＰＩライブラリ１１０４に基づいて判断することもできる。ＡＰＩライブラリ１１０４を使用して、識別されたコンテキスト及び特定のユーザ入力に対応するネイティブ・コマンドを検索できる。スワイプ操作のジェスチャ及びウェブ・ブラウザ・アプリケーションのコンテキストの実例では、ウェブ・ブラウザ・アプリケーションに対応するＡＰＩライブラリに、ウェブ・ページをスクロールさせる適切なＡＰＩ呼出しを問い合わせることができる。或いは、ＡＰＩライブラリ１１０４を省略してもよく、ネイティブ・コマンドを特定のユーザ入力及び識別されたコンテキストに向けてマッピングすることができる。
【００６５】
ユーザ入力が入力座標であると判断される状況では、透過レイヤ・コマンドは、入力位置座標及び識別されたコンテキストに少なくとも部分的に基づいて判断される。この場合、透過レイヤ・コマンドは、識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、基礎となるＵＩの対応する位置座標で動作を実行するように構成されている。
【００６６】
特定のコンテキスト及びユーザ入力にマッピングされた複数の可能な動作がある場合、設定１１０１を使用して、対応する透過レイヤ・コマンドを判断することができる。たとえば、図７のボタン７０１Ｂにより、ユーザは、入力座標がユーザ入力として受け取られたときに、選択モード、ポインティング・モード、又は描画モードの中から選択できる。この設定を使用して、透過レイヤ・コマンドを判断し、また拡張子により、どのネイティブ・コマンドが実行され、どの動作が実行されるかを判断することができる。この場合、可能なネイティブ・コマンドには、基礎となるＵＩの対応する位置座標に関連付けられたオブジェクトを選択するように構成された選択コマンド、基礎となるＵＩの対応する位置座標にポインタを移動するように構成されたポインタ・コマンド、及び基礎となるＵＩの対応する位置座標にある表示出力を変更するように構成されたグラフィック・コマンドが含まれ得る。
【００６７】
図１２Ａは、選択モードにトグルで切り替えられた場合の、入力座標を受信する実例を示す。図１２Ａに示すように、ユーザは、スタイラス１２００を表示デバイス１２０１上の（透過ＵＩ１２０３が重ねられた）オペレーティング・システムＵＩ１２０２に向けている。上記の実例と同様に、カメラ１２０４を使用して、スタイラス１２００の場所及び向き情報、並びに入力座標を判断することができる。選択モードにトグルで切り替えられ、スタイラス１２００がオペレーティング・システムＵＩ１２０２内のフォルダ１２０５に向けられるので、判断された透過レイヤ・コマンドには、入力座標に関連付けられたオブジェクト（この場合はフォルダ１２０５）を選択するネイティブのオペレーティング・システム・コマンドが含まれ得る。別の実例では、入力座標にウィンドウが位置する場合、結果としてウィンドウ全体が選択されることになる。
【００６８】
図１２Ｂは、ポインティング・モードにトグルで切り替えられた場合の、入力座標を受信する実例を示す。この場合、判断された透過レイヤ・コマンドには、マウス・ポインタ１２０６を入力座標の位置に移動させるネイティブのオペレーティング・システム・コマンドが含まれ得る。
【００６９】
図１２Ｃは、描画モードにトグルで切り替えられ、ユーザが複数の入力座標にわたってスタイラス１２００を動かした場合の、入力座標を受信する実例を示す。この場合、判断された透過レイヤ・コマンドには、各入力座標の位置で表示出力を変更するネイティブのオペレーティング・システム・コマンドが含まれ、結果として、ユーザ・インタフェース１２０２上にユーザが描いた線１２０７が生じ得る。描画モードで生成された、修正されたグラフィック出力は、透過レイヤ１２０３の一部として、たとえば入力座標の経路に関連するメタデータとして格納され得る。次いでユーザは、変更されたディスプレイ出力を画像としてエクスポートするオプションを選択できる。
【００７０】
ユーザ入力がジェスチャとして識別される状況では、識別されたコンテキストに少なくとも部分的に基づいてユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換することには、識別されたジェスチャ及び識別されたコンテキストに少なくとも部分的に基づいて透過レイヤ・コマンドを判断することが含まれ得る。透過レイヤ・コマンドは、識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、識別されたコンテキストの識別されたジェスチャに関連する動作を実行するように構成されている。この実例は、結果として、ウェブ・ブラウザでスクロール動作を実行するように構成されたネイティブ・コマンドが得られる、スワイプ操作のジェスチャ及びウェブ・ブラウザのアプリケーション・コンテキストに関連して上記で論じた。
【００７１】
ユーザ入力が（音声認識を使用するなどにより）１つ又は複数の単語として識別される状況では、識別された単語に少なくとも部分的に基づいてユーザ入力を１つ又は複数の透過レイヤ・コマンドに変換することには、識別された１つ又は複数の単語及び識別されたコンテキストに少なくとも部分的に基づいて透過レイヤ・コマンドを判断することが含まれ得る。透過レイヤ・コマンドは、識別されたコンテキストの少なくとも１つのネイティブ・コマンドを含むことができ、少なくとも１つのネイティブ・コマンドは、識別されたコンテキストの識別された１つ又は複数の単語に関連する動作を実行するように構成されている。
【００７２】
図１３は、入力音声データの中の識別された１つ又は複数の単語に基づいて判断される、透過レイヤ・コマンド１３００の実例を示す。識別された単語１３０１は、フレーズ「ホワイトボード」又は「空白ページ」の一方を含む。透過レイヤ・コマンド１３００には、コマンドの記述１３０２、及び透過レイヤ・コマンドの実行時に透過レイヤによって仮想ドライバ及びハードウェア出力デバイスに送信される出力命令である応答命令１３０３も含まれる。透過レイヤ・コマンド１３００には、さらに、ホワイトボード機能を呼び出すために使用される実際のネイティブ・コマンド１３０４が含まれる。
【００７３】
図１４は、例示的な実施例による、入力音声データの中の識別された１つ又は複数の単語に基づいて判断される、透過レイヤ・コマンド１４００の別の実例を示す。本実例では、１つ又は複数の単語は「電子メールを開け」である。図１４に示すように、透過レイヤ・コマンド１４００はネイティブ・コマンド「ｏｕｔｌｏｏｋ．ｅｘｅ」を含み、これは、ｏｕｔｌｏｏｋアプリケーションを起動する特定の実行可能ファイルを走らせるための命令である。透過レイヤ・コマンド１４００には、音声コマンドの受信に応じて出力されることになる音声応答「電子メールが開かれました」も含まれる。
【００７４】
図３に戻ると、ステップ３０４で、１つ又は複数の透過レイヤ・コマンドが透過レイヤ上で実行される。１つ又は複数の透過レイヤ・コマンドを実行することは、識別されたコンテキストの１つ又は複数のネイティブ・コマンドを実行させるように構成される。
【００７５】
図１５は、例示的な実施例による、透過レイヤ上で１つ又は複数の透過レイヤ・コマンドを実行するための流れ図を示す。ステップ１５０１で、透過レイヤ・コマンドの少なくとも１つのネイティブ・コマンドが識別される。ネイティブ・コマンドは、たとえば、透過レイヤ・コマンドの構造体の中でネイティブ・コマンドとして指定することができ、それにより識別が可能になる。
【００７６】
ステップ１５０２で、少なくとも１つのネイティブ・コマンドが、識別されたコンテキストで実行される。このステップには、少なくとも１つのネイティブ・コマンドを、識別されたそのコンテキスト用のＡＰＩを介して、識別されたコンテキストに渡すステップ、及び識別されたコンテキスト内でネイティブ・コマンドを実行するステップが含まれ得る。たとえば、識別されたコンテキストがオペレーティング・システムである場合、ネイティブ・コマンドを、実行するために、オペレーティング・システムＡＰＩを介してオペレーティング・システムに渡すことができる。さらに、識別されたコンテキストがアプリケーションである場合、ネイティブ・コマンドを、実行するために、アプリケーションＡＰＩを介してアプリケーションに渡すことができる。
【００７７】
オプションで、ステップ１５０３では、応答をハードウェア・デバイスに送信できる。上記で論じたように、この応答は透過レイヤから仮想ドライバ及びハードウェア・デバイスに送られ得る。
【００７８】
図１６〜図１９は、本明細書で開示するシステムのさらなる特徴を示す。図１６は、例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するためのインタフェースの実例を示す。インタフェース１６００のダッシュボードには、既に追加されており、所定のユーザ入力及びハードウェア・デバイス（たとえば、音声コマンド）を使用して起動できるアプリケーション１６０１のアイコンが含まれる。ダッシュボードは、アプリケーション固有であり、特定のユーザ入力にマッピングされる他のコマンドも示すことができる。追加ボタン１６０２を選択すると、追加コマンドメニュー１６０３が開く。このメニューでは、ユーザは、以下のオプションの中から選択できる。アイテム種類：下部のメニュー・バーに追加する固定アイテム／ドラッグ・メニューに追加する通常アイテム、アイコン：画像アイコンを選択する、背景：背景アイコンの色を選択する、色：アイコンの色を選択する、名前：新しいアイテム名を設定する、音声コマンド：新しいアプリケーションを開くために、音声アクティベーション・コマンドを設定する、フィードバック応答：アプリケーションの音声応答フィードバックを設定する、コマンド：起動するアプリケーションの種類又はカスタムのコマンドの種類を選択する（たとえば、アプリケーション・コマンドの起動、アプリケーション・コマンド内での動作の実行、アプリケーション・コマンドの終了など）、プロセス開始：新しいプロセス又はアプリケーションを起動する場合の、プロセス又はアプリケーションの名前、及びパラメータ：新しいプロセス又はアプリケーションに渡す任意のパラメータ。
【００７９】
図１７は、例示的な実施例による、描画インタフェース１７００及び描画モードの様々なコンポーネント及びオプションを示す。図１８は、オブジェクトを認識し、ユーザのタッチ及びジェスチャを使用した入力の供給を可能にするために使用されるビデオ・カメラ・ハードウェア・デバイス用の、較正及び設定インタフェース１８００を示す。図１９は、ユーザがインタフェースの様々な態様をカスタマイズし、入力モードをトグルで切り替え、他の変更を行うことを可能にする、一般設定インタフェース１９００を示す。インタフェース１９００に示すように、ユーザは、設定ページにアクセスして、ハードウェア・スタイラス（「マジック・スタイラス」と称する）の設定を較正及び調節することもできる。
【００８０】
１つ又は複数の上記技法は、１つ又は複数のコンピュータ・システムに実装されるか、又はそれを備えることができる。図２０は、コンピュータ処理環境２０００の実例を示す。コンピュータ処理環境２０００は、説明した実施例の使用法又は機能の範囲に関するどんな制限を示唆することも意図しない。
【００８１】
図２０を参照すると、コンピュータ処理環境２０００は、少なくとも１つの処理ユニット２０１０及びメモリ２０２０を備える。処理ユニット２０１０は、コンピュータ実行可能命令を実行し、実際のプロセッサ又は仮想プロセッサであり得る。多重処理システムでは、複数の処理ユニットがコンピュータ実行可能命令を実行して、処理能力を向上させる。メモリ２０２０は、揮発性メモリ（たとえばレジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（たとえば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、又はこれら２種のメモリの何らかの組合せであり得る。メモリ２０２０は、説明した技法を実現するソフトウェア２０８０を格納することができる。
【００８２】
コンピュータ処理環境は、さらなる特徴を有することができる。たとえば、コンピュータ処理環境２０００は、記憶装置２０４０、１つ又は複数の入力デバイス２０５０、１つ又は複数の出力デバイス２０６０、及び１つ又は複数の通信接続部２０９０を備える。バス、コントローラ、又はネットワークなどの相互接続の仕組み２０７０は、コンピュータ処理環境２０００のコンポーネントを相互接続する。通常、オペレーティング・システムのソフトウェア又はファームウェア（図示せず）は、コンピュータ処理環境２０００で実行する他のソフトウェアのための動作環境を提供し、コンピュータ処理環境２０００のコンポーネントの作業を調整する。
【００８３】
記憶装置２０４０は、取外し可能か又は取外し不能であってもよく、磁気ディスク、磁気テープ若しくはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、又は情報を格納するために使用でき、コンピュータ処理環境２０００内でアクセス可能な他のどんな媒体も含む。記憶装置２０４０は、ソフトウェア２０８０の命令を格納することができる。
【００８４】
入力デバイス２０５０は、キーボード、マウス、ペン、トラックボール、タッチ画面、又はゲーム・コントローラなどのタッチ入力デバイス、音声入力デバイス、走査デバイス、デジタル・カメラ、リモコン、或いはコンピュータ処理環境２０００へ入力を供給する別のデバイスであり得る。出力デバイス２０６０は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、又はコンピュータ処理環境２０００からの出力を供給する別のデバイスであり得る。
【００８５】
通信接続部２０９０は、通信媒体を介した、コンピュータ処理する別の実体との通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオ若しくはビデオ情報、又は変調データ信号内の他のデータなどの情報を伝達する。変調データ信号は、信号内の情報を符号化するようなやり方で設定又は変更された信号特性の１つ又は複数を有する信号である。限定するためではなく実例として、通信媒体には、電気式、光学式、ＲＦ、赤外線、音響、又は他の搬送波を使って実現される、有線又は無線の技法が含まれる。
【００８６】
実施態様は、コンピュータ可読媒体に関して説明することができる。コンピュータ可読媒体とは、コンピュータ処理環境内でアクセスできる任意の利用可能な媒体である。限定するためではなく実例として、コンピュータ処理環境２０００内で、コンピュータ可読媒体には、メモリ２０２０、記憶装置２０４０、通信媒体、及び上記のどんな組合せも含まれる。
【００８７】
もちろん、図２０は、ただ容易に識別できるように、コンピュータ処理環境２０００、表示デバイス２０６０、及び入力デバイス２０５０を別個のデバイスとして示している。コンピュータ処理環境２０００、表示デバイス２０６０、及び入力デバイス２０５０は、別個のデバイスであってもよく（たとえば、有線でモニタ及びマウスに接続されたパーソナル・コンピュータ）、単一のデバイスに統合されてもよく（たとえば、スマートフォン若しくはタブレットなどの、タッチ式ディスプレイを備えた携帯型デバイス）、又はデバイスの任意の組合せであってもよい（たとえば、タッチ画面式表示デバイスに動作可能に結合されたコンピューティング・デバイス、単一の表示バイス及び入力デバイスに取り付けられた複数のコンピューティング・デバイスなど）。コンピュータ処理環境２０００は、セットトップ・ボックス、パーソナル・コンピュータ、或いは１つ又は複数のサーバ、たとえばネットワーク化されたサーバのファーム、クラスタ化されたサーバ環境、又はコンピューティング・デバイスのクラウド・ネットワークであり得る。
【００８８】
説明した実施例を参照して本発明の原理を説明及び図示してきたが、説明した実施例は、かかる原理から逸脱することなく、配置構成及び詳細を変更できることが理解されよう。ソフトウェアで示し説明した実施例の要素は、ハードウェアで実施することができ、逆も同様である。
【００８９】
本発明の原理を適用できる多くの可能な実施例を考慮して、添付の特許請求の範囲及びその均等物の範囲及び精神に含まれ得る、すべてのかかる実施例を本発明として特許請求する。
【図１】
2020532007.tif 000003
【図２】
2020532007.tif 000004
【図３】
2020532007.tif 000005
【図４】
2020532007.tif 000006
【図５Ａ】
2020532007.tif 000007
【図５Ｂ】
2020532007.tif 000008
【図６】
2020532007.tif 000009
【図７】
2020532007.tif 000010
【図８】
2020532007.tif 000011
【図９】
2020532007.tif 000012
【図１０】
2020532007.tif 000013
【図１１】
2020532007.tif 000014
【図１２Ａ】
2020532007.tif 000015
【図１２Ｂ】
2020532007.tif 000016
【図１２Ｃ】
2020532007.tif 000017
【図１３】
2020532007.tif 000018
【図１４】
2020532007.tif 000019
【図１５】
2020532007.tif 000020
【図１６】
2020532007.tif 000021
【図１７】
2020532007.tif 000022
【図１８】
2020532007.tif 000023
【図１９】
2020532007.tif 000024
【図２０】
2020532007.tif 000025
【国際調査報告】
2020532007.tif 000026
2020532007.tif 000027
2020532007.tif 000028
2020532007.tif 000029
2020532007.tif 000030