本主題討論 Windows Precision Touchpad 的最上層集合,並說明該集合如何向 Windows 主機提供符合 HID 規範的觸控板報告。
Windows Precision Touchpad 裝置可以使用 HID 通訊協定來提供最上層集合,該集合會顯示為數位板/觸控板(頁面 0x0D、使用量 0x05)。
Windows Precision Touchpad 集合的目的是提供豐富的多聯繫人和按鈕報告給主機,以及與這些報告相關的裝置資訊。 集合應該支援兩個功能報告:一個可讓主機取得裝置功能,另一個報告可取得裝置的認證狀態。 如需強制輸入報告的範例,請參閱 範例報表描述元。
您可以實作選擇性(但強烈建議使用)功能報告,以從主機取得延遲模式提示,以達到睡眠模式中 USB 裝置所需的耗電量。 下列各節提供 Windows Precision Touchpad 最上層集合中包含的報告詳細資訊。
裝置功能功能報告
裝置功能功能報告是由 Windows Precision Touchpad 主機要求,以擷取裝置聯繫人報告功能和裝置按鈕類型的相關信息。
裝置的聯繫人報告功能是由可報告之並行表面接觸的最大數目所定義。 Windows 精確度觸控板至少應支援 3 個並行聯繫人,以及最多 5 個並行聯繫人。 觸控板應該透過裝置功能功能報告中的 [聯繫人計數上限] 報告此值(頁面 0x0D、使用量 0x55)。 雖然報告數據,但裝置不能報告超過聯繫人計數上限的聯繫人數目。 如果輸入框架包含的聯繫人數目超過最大值,主機將會捨棄整個畫面,包括任何先前回報聯繫人的數據。 為了獲得最佳用戶體驗,即使有任何現有的聯繫人離開,裝置應該隱藏在達到新聯繫人存留期上限之後偵測到的任何新聯繫人的報告。 現有的聯繫人可以繼續報告,如果有任何離開,新抵達的聯繫人可以採取他們的位置。
裝置的按鈕類型定義為可抑制實作(也稱為點擊板類型)或不可抑制的實作(也稱為壓力板)。 Windows Precision Touchpad 也可以接受非按鈕報告數位板表面和外部按鈕。
按鈕實作類型應該透過裝置功能功能報告中的按鈕類型值(Page 0x0D、Usage 0x59) 指定。 如果裝置有非按鈕報告數位板表面,而是只依賴外部按鈕進行滑鼠點擊,則可以選擇性地報告此使用方式。
下表顯示按鈕類型使用值。
| 按鈕類型值 | 實作 |
|---|---|
| 0 | 令人沮喪 (點擊墊) |
| 1 | 不可抑鬱(壓力墊) |
| 2 | 不可點選 (Discrete-pad) |
主機可以在讀取報表描述元之後,隨時要求 Windows Precision Touchpad 的裝置功能功能報告。
裝置認證狀態功能報告
Windows Precision Touchpad 主機會要求裝置認證狀態功能報告,以擷取裝置 256 位元組 Blob 的相關信息。
在 Windows 10 上向主機報告有效的認證 Blob 是選擇性的,但需要與 Windows 8.1 回溯相容性。 未通訊已簽署 PTPHQA Blob 的裝置仍必須回報 256 位元組,例如下面的範例 Blob。 未報告有效認證 Blob 的裝置將無法在 Windows 8.1 上運作。 Windows 不會與使用 HID 觸控板使用量但不會在其裝置功能功能報告中公開認證狀態的裝置互動。
裝置認證狀態功能報告中的 256 位元組應該透過廠商定義的使用量頁面(頁面 0xFF、使用量 0xC5)中的廠商特定使用量來指定。
在裝置收到指出其認證狀態的 256 位元組 Blob 之前,它應該實作預設 Blob,如下所示:
0xfc, 0x28, 0xfe, 0x84, 0x40, 0xcb, 0x9a, 0x87, 0x0d, 0xbe, 0x57, 0x3c, 0xb6, 0x70, 0x09, 0x88, 0x07,
0x97, 0x2d, 0x2b, 0xe3, 0x38, 0x34, 0xb6, 0x6c, 0xed, 0xb0, 0xf7, 0xe5, 0x9c, 0xf6, 0xc2, 0x2e, 0x84,
0x1b, 0xe8, 0xb4, 0x51, 0x78, 0x43, 0x1f, 0x28, 0x4b, 0x7c, 0x2d, 0x53, 0xaf, 0xfc, 0x47, 0x70, 0x1b,
0x59, 0x6f, 0x74, 0x43, 0xc4, 0xf3, 0x47, 0x18, 0x53, 0x1a, 0xa2, 0xa1, 0x71, 0xc7, 0x95, 0x0e, 0x31,
0x55, 0x21, 0xd3, 0xb5, 0x1e, 0xe9, 0x0c, 0xba, 0xec, 0xb8, 0x89, 0x19, 0x3e, 0xb3, 0xaf, 0x75, 0x81,
0x9d, 0x53, 0xb9, 0x41, 0x57, 0xf4, 0x6d, 0x39, 0x25, 0x29, 0x7c, 0x87, 0xd9, 0xb4, 0x98, 0x45, 0x7d,
0xa7, 0x26, 0x9c, 0x65, 0x3b, 0x85, 0x68, 0x89, 0xd7, 0x3b, 0xbd, 0xff, 0x14, 0x67, 0xf2, 0x2b, 0xf0,
0x2a, 0x41, 0x54, 0xf0, 0xfd, 0x2c, 0x66, 0x7c, 0xf8, 0xc0, 0x8f, 0x33, 0x13, 0x03, 0xf1, 0xd3, 0xc1, 0x0b,
0x89, 0xd9, 0x1b, 0x62, 0xcd, 0x51, 0xb7, 0x80, 0xb8, 0xaf, 0x3a, 0x10, 0xc1, 0x8a, 0x5b, 0xe8, 0x8a,
0x56, 0xf0, 0x8c, 0xaa, 0xfa, 0x35, 0xe9, 0x42, 0xc4, 0xd8, 0x55, 0xc3, 0x38, 0xcc, 0x2b, 0x53, 0x5c,
0x69, 0x52, 0xd5, 0xc8, 0x73, 0x02, 0x38, 0x7c, 0x73, 0xb6, 0x41, 0xe7, 0xff, 0x05, 0xd8, 0x2b, 0x79,
0x9a, 0xe2, 0x34, 0x60, 0x8f, 0xa3, 0x32, 0x1f, 0x09, 0x78, 0x62, 0xbc, 0x80, 0xe3, 0x0f, 0xbd, 0x65,
0x20, 0x08, 0x13, 0xc1, 0xe2, 0xee, 0x53, 0x2d, 0x86, 0x7e, 0xa7, 0x5a, 0xc5, 0xd3, 0x7d, 0x98, 0xbe,
0x31, 0x48, 0x1f, 0xfb, 0xda, 0xaf, 0xa2, 0xa8, 0x6a, 0x89, 0xd6, 0xbf, 0xf2, 0xd3, 0x32, 0x2a, 0x9a,
0xe4, 0xcf, 0x17, 0xb7, 0xb8, 0xf4, 0xe1, 0x33, 0x08, 0x24, 0x8b, 0xc4, 0x43, 0xa5, 0xe5, 0x24, 0xc2
主機可以在讀取報表描述元之後,隨時要求 Windows Precision Touchpad 的裝置認證狀態報告。
延遲模式功能報告
「延遲模式」功能報告是由主機傳送至 Windows Precision Touchpad,以指出何時需要省電的高延遲,而相反地,當正常延遲需要作業時。 對於USB連線的 Windows Precision Touchpad 裝置,這可讓裝置區分因系統進入 S3 或連線待命而暫停閑置 (運行時間 IDLE) 和暫停。
延遲模式應該使用延遲模式使用方式的值(頁面 0x0D、使用量 0x60)在延遲模式功能報告中。 下表顯示延遲模式使用值。
| 延遲模式值 | 延遲模式 |
|---|---|
| 0 | 一般延遲 |
| 1 | 高延遲 |
觸覺強度特徵報告 (選擇性)
在 Windows 11 中,已實作觸覺強度功能報告,以提供以具有觸覺執行器之目前 PTP 為基礎的進一步功能。 觸覺強度功能報告是由主機傳送至 Windows Precision Touchpad,以設定觸控板的觸覺回饋強度。 此選用功能報告要求裝置需提供一個 SimpleHapticsController(第 0x0E 頁,使用 0x01),該控制器公開了具單一全域強度的 SET_FEATURE(第 0x0E 頁,使用 0x23)。
如需範例描述元,請參閱 範例報表描述項。
按鈕按下閾值功能報告 (選擇性)
在 Windows 11 組建 26027+中,已新增使用者可透過 Windows 觸控板設定設定可設定的點選強制功能的支援(也稱為按鈕按下閾值、觸控板上強制套用的臨界值,以產生按下/按鈕向下)。 若要讓精確度觸控板支援此功能,它應包含單一使用按鈕按下閾值的處理SET_FEATURE報告(頁面0x0D,使用量0xB0)。 在列舉期間,主機會從描述元評估支持的邏輯和實體範圍,並計算設定UI的公開選項,包括預設值。 主機應發出SET_FEATURE,以將使用者指定的按鈕按下閾值傳達給裝置:此發行可能會隨時發生,但應該在變更設定時發生、發生使用者切換,以及列舉或重設裝置時發生。
邏輯範圍應以線性方式對應至值的實體範圍,並以預設值為中心進行平均間距和置中。 取得邏輯範圍時,預設會使用下列公式來計算:
[邏輯最小值]、[預設] 和 [邏輯最大值] 會分別對應到透過 Windows 設定 UI 向使用者公開的 3 個不同的按鈕按下層級(分別支援 「低」、「中」和「高」)。
按鈕按下閾值的建議實體範圍至少涵蓋介於 110g 到 190g 之間的範圍,分別對應到最小值和最大值。 如需使用實體最大值 190g 的範例描述元,以及實體最小值為 110g(因此,根據上述公式,預設值為 150g)請參閱 範例報告描述元。
Windows 精確度觸控板輸入報告
主機透過 Windows Precision Touchpad 集合從輸入報表擷取聯繫人數據時,會使用下表中的使用方式。 此數據表包含所有強制使用方式,以及與所報告之每個唯一數位板接觸相關的支持選擇性用法。
| member | 描述 | 頁 | ID | 強制/選擇性 |
|---|---|---|---|---|
| 連絡人識別碼 | 可唯一識別指定框架內的聯繫人。 | 0x0D | 0x51 | 必要 |
| X | 聯繫人位置的 X 座標。 | 0x01 | 0x30 | 必要 |
| Y | 聯繫人位置的 Y 座標。 | 0x01 | 0x31 | 必要 |
| 提示 | 如果接觸點位於數位板表面,請設定 。 | 0x0D | 0x42 | 必要 |
| 信賴度 | 設定連絡人太大而無法成為手指時。 | 0x0D | 0x47 | 必要 |
| 寬 | 聯繫人周圍的周框方塊寬度。 | 0x0D | 0x48 | 選擇性 |
| 高 | 聯繫人周圍的周框方塊高度。 | 0x0D | 0x49 | 選擇性 |
| 氣壓 | 用戶套用至連絡點的壓力量。 | 0x0D | 0x30 | 選擇性 |
| 方位角 | 與 Z 軸有關之接觸的逆時針旋轉。 | 0x0D | 0x3F | 選擇性 |
下表包含所有 Windows Precision Touchpad 輸入報表中應該呈現的所有最上層使用方式。
| member | 描述 | 頁 | ID | 強制/選擇性 |
|---|---|---|---|---|
| 掃描時間 | 相對掃描時間。 | 0x0D | 0x56 | 必要 |
| 聯繫人計數 | 指定報告中要報告的聯繫人總數。 | 0x0D | 0x54 | 必要 |
| 機械力 | 套用至觸控板感測器的總強制。 | 0x20 | 0x494 | 選擇性 |
| 按鈕 1 | 表示與數位板整合之觸控板按鈕的按鈕狀態。 | 0x09 | 0x01 | 選擇性 |
| 按鈕 2 | 指出主要按鈕的外部按鈕 [按鈕狀態] (預設左方) 按兩下。 | 0x09 | 0x02 | 選擇性 |
| 按鈕 3 | 指出次要按鈕的外部按鈕 [按鈕狀態] (預設右鍵) 按兩下。 | 0x09 | 0x03 | 選擇性 |
任何未報告聯繫人或報表層級之所有強制使用狀況的裝置,都將無法當做 Windows Precision Touchpad 運作。 Windows 主機會嚴格強制執行強制使用方式。 如果邏輯最大值尚未限制,則可以將值優化以減少描述元大小。
下列各節提供報表中成員的相關信息。 如需按鈕成員的相關信息,請參閱 按鈕、報表層級使用量。
聯繫人標識碼
可唯一識別報表內其生命周期的聯繫人。 在裝置偵測到並回報聯繫人時,聯繫人標識碼必須維持不變。 每個個別的並行聯繫人都必須有唯一標識碼。 一旦不再偵測到或回報先前相關聯的聯繫人,就可以重複使用標識碼。 沒有預期的數值範圍,而且所使用的值只會受限於描述元中指定的邏輯最大值。
X/Y
X 和 Y 值會報告指定聯絡人的座標。 Windows 精確度觸控板應該針對每個聯繫人報告一個點。 應該針對 X 和 Y 用法指定下列全域專案:
邏輯最小值和邏輯最大值(確保大於或等於 300DPI 輸入解析度)。
注意 整個邏輯座標範圍應該可跨 X 軸和 Y 軸報告。
實體最小值和實體最大值(請參閱裝置整合 - 大小)。
單位和單位指數。
座標 0,0 (x, y 值) 表示觸控板左上角。
祕訣
用來指出接觸點在介面上,或已離開數位板的表面。 這是由報表大小為1位的主要專案表示。 傳遞接觸報表時,當接觸點位於數位板表面時,應該設定位,並在接觸器離開表面時清除。
當聯繫人回報時,提示開關已清除,所報告的 (X, Y) 位置應該與設定小費開關所報告的最後一個位置相同。
在上圖中概述的範例參考時,兩個聯繫人會放在Windows Precision Touchpad 上,然後在一段時間后,第一個接觸點隨即提升,而第二個接觸點會保留在表面一些額外的時間。 如下表所述,將會回報這一點。
| 報告 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 聯繫人計數 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 |
| 聯繫人 1:小費開關 | 1 | 1 | 1 | 1 | 1 | 0 | NR | NR | NR | NR | NR |
| 連絡人 1:X、Y | X₁, Y₁ | X≦、Y≦ | X₃, Y₃ | X₄,Y₄ | X₅, Y₅ | X₆,Y₆ | NR | NR | NR | NR | NR |
| 聯繫人 2:小費開關 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 連絡人 2:X、Y | X₁, Y₁ | X≦、Y≦ | X₃, Y₃ | X₄,Y₄ | X₅, Y₅ | X₆,Y₆ | X₇,Y₇ | X₈, Y₈ | X₉,Y₉ | X₁₀, Y₁₀ | X₁₁, Y₁₁ |
信賴度
用來指出聯繫人是刻意的。 相容性需求測試,以確保當聯繫人的任何尺寸(高度或寬度)大於 25mm 時,此位會設定為 「關閉」,這表示這不是非預期的聯繫人。 Windows Precision Touchpad 裝置不應隱藏韌體處理中的任何聯繫人,但應該將所有聯繫人轉送至主機,並指出信賴度。 主機接著會使用信賴度來追蹤聯繫人為意外。
一旦裝置判斷聯繫人無意中,就應該清除該聯繫人報告和所有後續報告的信心位。 在聯繫人被分類為無意之前,裝置應該會在報告中設定該聯繫人的信賴度位。
寬度和高度
Width 和 Height 使用方式代表觸控板接觸周圍周框方塊的寬度和高度。 報告的值絕對不應該是零 (0),除非報告了 「UP」 事件,在此情況下,它們應該是零 (0)。
壓力
壓力是手指對數位板表面施加的力量。 壓力允許的範圍沒有限制。
方位角
Azimuth 會透過完整的圓形範圍,指定繞 Z 軸繞著游標的逆時針旋轉。 必須指定實體範圍和邏輯範圍。 實體範圍必須是 0 到 360 或弧度相等,但裝置可能會報告完整範圍或一半的範圍,假設聯繫人省略號是對稱式硬體功能。 邏輯範圍必須夠大,才能提供至少兩個小數位數的精確數據。
掃描時間
掃描時間會以100個單位回報相對數位板時間。 掃描時間代表裝置在裝置開始報告數據之後,在閑置期間之後所報告之第一個畫面的差異。 第一次收到的掃描時間會被視為後續報告時間的基底時間。 報告掃描時間之間的差異應該會反映數位板的掃描頻率。 請務必注意,不同於其他使用方式,主機不允許單位在掃描時間使用量上有任何彈性。 它必須是100個單位。 值預期會變換,因為只有 2 個字節配置給計數器。
掃描時間值應該與框架內的所有聯繫人相同。
聯繫人計數
這用來指出所指定框架中報告的聯繫人數目,而不論其相關聯的小費開關為何。
機械力
這可用來報告要套用至觸控板感測器的總力,這與個別手指可報告的選擇性壓力無關。 如果個別接觸器也報告壓力,則單位、單位指數、物理範圍和邏輯範圍必須為壓力和機械力的縮排值,而機械力的值必須 = SUM(連絡人 1 的壓力 + 連絡人壓力 2 + 。等) 無論每個聯繫人的信心位為何。