使用報表描述元來支援功能探索 (Windows 7)
本節說明廠商如何使用報表描述元來支援觸控和多觸控裝置的功能探索。
報表描述元
廠商提供的驅動程式會藉由提供報告描述元,將其裝置功能回報給作業系統。 如需報表描述元的完整範例,請參閱 Elotouch.c 檔案,這是 Windows 驅動程式套件 (WDK) 中 EloMT 範例的一部分。
若要讓 Windows 7 偵測到裝置支援多個輸入的能力,驅動程式必須在報表描述元中包含 連絡人識別碼使用 方式 (0x51) 。 請注意,在 範例報表描述元 (序列報告模式) 中,此用法位於單一最上層實體集合中,而在 範例報表描述元 (平行/混合模式) 中,這兩個邏輯集合中都會顯示一次此用法。
功能報表獨佔性
在 Windows 7 中,系統會以獨佔方式開啟包含裝置模式功能報告的組態最上層集合。 因為作業系統會以獨佔方式開啟功能報表,所以協力廠商應用程式無法存取報表。
因為 Windows 7 將裝置設定為只透過多個輸入來報告資料,所以最上層集合必須支援必要的多重觸控使用方式。 如需必要使用方式的詳細資訊,請參閱 支援多觸控數位板驅動程式中的使用量。
在 Windows XP 和 Windows Vista 中,協力廠商應用程式可以使用功能報告來選取目前作用中的輸入模式,例如單一觸控或滑鼠型輸入。 我們建議使用 Windows XP 平板電腦版和 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) 可以有下列其中一個值:
Mode | 值 |
---|---|
滑鼠 (建議的預設) |
0x00 |
單一輸入 (單一觸控或手寫筆) |
0x01 |
多個輸入 |
0x02 |
設定單一輸入模式時,廠商可能會執行下列其中一項動作:
只傳送第一個連絡人的相關資訊。 這可以在韌體或設備磁碟機中實作。
卸載 HID 迷你驅動程式中其他連絡人的所有資訊。 此方法可減少韌體中所需的邏輯。 不過,它僅適用于選擇寫入設備磁碟機的實作者。
設定滑鼠模式時,韌體或設備磁碟機應該使用滑鼠最上層集合,從偵測到的第一個連絡人路由資料。
根據裝置的功能及其支援的作業系統版本,為您的裝置選擇適當的預設裝置模式。 若要提供舊版 Windows 的回溯相容性,我們建議使用滑鼠模式作為預設值。 將預設設定為滑鼠模式時,裝置可以使用任何作業系統。
如果您可以保證裝置不會在 Windows Vista 之前的任何 Windows 版本上使用,最好是將預設設定為單一輸入模式。 如果裝置發現功能,Windows 7 會重新設定裝置的多個輸入。
裝置識別碼
當裝置識別碼 (0x53) 是數位板或滑鼠最上層集合的一部分時, (SV) 的靜態值。 當報表描述項包含相同種類的多個數位板最上層集合時,就需要它。 此使用方式可唯一識別數位板最上層集合,而且應該出現在功能報表中。
如果裝置可以當做滑鼠運作,滑鼠集合應該具有與對應數位板集合相同的裝置識別碼。 只有一個數位板最上層集合的裝置不需要指定裝置識別碼使用方式。
當使用量是裝置設定邏輯集合的一部分時,它是動態值 (DV) 。 在此案例中,使用量可讓主機選取想要設定的裝置。 值為零表示所有集合。 非零值表示具有相符裝置識別碼的最上層集合。
觸控及手寫筆支援
如果您的裝置包含提供 Windows Touch 和手寫筆功能的數位板,您必須個別報告觸控和手寫筆集合。 如果您的驅動程式可能安裝在平板平板平板電腦或其他沒有滑鼠的電腦上,您也應該報告滑鼠集合。