次の方法で共有


レポート記述子を使用した機能検出のサポート (Windows 7)

このセクションでは、ベンダーがレポート記述子を使用して、タッチおよびマルチタッチ デバイスの機能検出をサポートする方法について説明します。

レポート記述子

ベンダーが提供するドライバーでは、レポート記述子を指定することで、そのデバイス機能をオペレーティング システムに報告します。 レポート記述子の完全な例については、Elotouch.c ファイルを参照してください。これは、Windows Driver Kit (WDK) 内の EloMT サンプルに含まれています。

デバイスが複数の入力をサポートできることを Windows 7 で検出するには、ドライバーによって、レポート記述子内に連絡先識別子の使用方法 (0x51) が取り込まれる必要があります。 サンプル レポート記述子 (シリアル報告モード) では、この使用法は単一のトップ レベルの物理コレクションに含まれるのに対し、サンプル レポート記述子 (並列/ハイブリッド モード) では、この使用法は、複数の入力を記述する両方の論理コレクションに 1 回表示されるという点に注意してください。

機能レポートの排他性

Windows 7 では、デバイス モード機能レポートを含む構成のトップ レベル コレクションがシステムによって排他的に開かれます。 機能レポートはオペレーティング システムによって排他的に開かれるため、そのレポートにサード パーティ製のアプリケーションからアクセスすることはできません。

Windows 7 の場合は、複数の入力でのみデータを報告するようにデバイスが構成されるため、必要なマルチタッチ使用法がトップレベル コレクションによってサポートされる必要があります。 必要な使用法の詳細については、「マルチタッチ デジタイザー ドライバーでの使用法のサポート」を参照してください。

Windows XP および Windows Vista の場合、サードパーティのアプリケーションでは、機能レポートを使用して、現在アクティブな入力モード (シングル タッチやマウスベースの入力など) を選択できます。 Windows XP Tablet PC Edition および Windows Vista にはシングル タッチをお勧めします。 Windows XP および Microsoft Windows 2000 にはマウスをお勧めします。

機能レポートの要件

機能レポートは、独自のトップ レベルコレクション内に含める必要があります。また、これには複数の入力構成の使用法を含める必要があります。

次の例では、Elotouch.c からの機能レポートを示します。

    0x09, 0x0E,                         // USAGE (Device Configuration)
    0xa1, 0x01,                         // COLLECTION (Application)
    0x85, REPORTID_FEATURE,             //   REPORT_ID (Configuration)
    0x09, 0x23,                         //   USAGE (Device Settings)
    0xa1, 0x02,                         //   COLLECTION (logical)    
    0x09, 0x52,                         //    USAGE (Device Mode)         
    0x09, 0x53,                         //    USAGE (Device Identifier)
    0x15, 0x00,                         //    LOGICAL_MINIMUM (0)      
    0x25, 0x0a,                         //    LOGICAL_MAXIMUM (10)
    0x75, 0x08,                         //    REPORT_SIZE (8)         
    0x95, 0x02,                         //    REPORT_COUNT (2)         
    0xb1, 0x02,                         //   FEATURE (Data,Var,Abs    
    0xc0,                               //   END_COLLECTION
    0xc0,                               // END_COLLECTION

デバイス モード

デバイス モード使用法 (0x52) には、次のいずれかの値を指定できます。

モード

マウス (推奨される既定値)

0x00

単一入力 (シングル タッチまたはスタイラス)

0x01

複数の入力

0x02

単一入力モードが設定されている場合、ベンダーは次のいずれかを実行できます。

  • 最初の連絡先に関する情報のみを送信します。 これは、ファームウェアまたはデバイス ドライバーで実装できます。

  • HID ミニドライバーの他の連絡先に関する情報はすべて削除します。 この方法を使用すると、ファームウェアに必要なロジックが削減されます。 ただし、それを使用できるのは、デバイス ドライバーを作成することを選択した実装者に限られます。

マウス モードが設定されている場合、ファームウェアまたはデバイス ドライバーでは、マウスのトップ レベルコレクションを使用して検出された最初の連絡先からデータをルーティングする必要があります。

ご利用のデバイスの機能と、それによってサポートされているオペレーティング システムのバージョンに基づいて、ご利用のデバイスに適した既定のデバイス モードを選択します。 以前のバージョンの Windows との下位互換性を実現するには、既定値としてマウス モードを使用することをお勧めします。 既定値をマウス モードに設定すると、デバイスは任意のオペレーティング システムで動作できます。

Windows Vista より前のバージョンの Windows でデバイスが使用されていないことを保証できる場合は、既定値を単一入力モードに設定することをお勧めします。 Windows 7 では、該当する機能が検出されると、複数の入力用にデバイスが再構成されます。

デバイス識別子

デバイス識別子 (0x53) は、それがデジタイザーまたはマウスのトップ レベル コレクションに属する場合、静的な値 (SV) となります。 これは、レポート記述子に、同じ種類のデジタイザー トップ レベル コレクションが複数含まれている場合に必要です。 この使用法により、デジタイザー トップ レベル コレクションが一意に識別され、機能レポート内に表示されることになります。

デバイスをマウスとして機能させることができる場合、マウス コレクションには、対応するデジタイザー コレクションと同じデバイス識別子が必要です。 デジタイザー トップ レベル コレクションが 1 つしかないデバイスでは、デバイス識別子の使用法を指定する必要はありません。

使用法がデバイス設定の論理コレクションの一部である場合、動的な値 (DV) になります。 このシナリオでは、その使用法を指定すれば、構成する必要があるデバイスをホストで選択できるようになります。 値 0 は、すべてのコレクションを示します。 0 以外の値は、デバイス識別子が一致するトップ レベル コレクションを示します。

タッチとペンのサポート

お使いのデバイスに Windows Touch とペンの両方の機能を提供するデジタイザーが搭載されている場合は、タッチとペンのコレクションを別々にレポートする必要があります。 お使いのドライバーがスレート、タブレット PC、またはマウスがないその他のコンピューターにインストールされている可能性がある場合は、マウス コレクションもレポートする必要があります。