共用方式為


必要的 HID 最上層集合 (required-hid-top-level-collections)

本主題討論 Windows 10 和更新版本中用於手寫筆報告的必要 HID 最上層集合。

整合式 Windows 手寫筆裝置至少應該公開單一強制最上層的畫筆報告集合。 也可以實作韌體更新的選擇性(但建議)集合。 此外,在 Windows 10 之前的作業系統上,也可以實作選用的手寫筆游標收集滑鼠集合。

下圖顯示整合式 Windows 手寫筆裝置的 HID 集合。

此圖顯示整合式 Windows 手寫筆裝置的隱藏集合。image 表示廠商特定韌體更新集合的支援。

滑鼠集合 (虛擬)

整合式 Windows 手寫筆裝置可以使用 HID 通訊協定來提供最上層集合,該集合會顯示為一般桌面/滑鼠(Page 0x01、Usage 0x02)。

整合式 Windows 手寫筆裝置的 (虛擬) 滑鼠集合是為了為主機提供符合 HID 規範的滑鼠裝置,以在早於 Windows 10 的作業系統上顯示游標。 此集合不需要實際的滑鼠報告;只有描述項中存在滑鼠集合。 如果您不需要支援早於 Windows 10 的作業系統,則可以省略此集合。

整合式 Windows 手寫筆集合

整合式 Windows 手寫筆裝置應該使用 Windows 10 系統上的 HID 通訊協定,讓裝置提供最上層集合,該集合會顯示為數位板/整合式畫筆(Page 0x0D,Usage 0x02)。

整合式 Windows 手寫筆集合的目的是提供豐富的接觸、壓力、清除和按鈕回報給主機。 集合可以選擇性地支援功能報告,以取得裝置的認證狀態。 本主題的整合式 Windows 手寫筆輸入報告一節會詳細指定強制輸入報告。 您可以實作選擇性(但強烈建議使用)功能報告,以從主機取得延遲模式提示。 此選用功能可協助在處於睡眠模式喚醒的 USB 裝置上達到最低耗電量。

裝置認證狀態功能報告

如果您實作裝置認證狀態功能報告,整合式 Windows Pen 裝置的主機可以使用它來擷取裝置的 256 位元組 Blob。

在裝置認證狀態功能報告中,應該透過廠商特定的 HID 使用量來指定 256 位元組 0xC5 0xFF

在裝置收到指出其認證狀態的 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、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、0x8a、0x56、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 手寫筆裝置的裝置認證狀態功能報告。

延遲模式功能報告

注意

Windows 10 版本 1511 和舊版操作系統目前不會將此 HID 功能報告給手寫筆或觸控螢幕裝置,這些裝置碰巧提供其支援。 不過,將延遲模式功能報告的支援新增至裝置,可確保裝置已準備好在畫筆和觸控螢幕裝置上支援裝置的未來日期。

延遲模式功能報告是由主機傳送至整合式 Windows 手寫筆裝置,以指出何時需要省電的高延遲,而相反地,當正常延遲需要作業時。 如果是USB連接的整合式Windows手寫筆裝置,這可讓裝置區分因系統進入S3或 連線 待命而暫停閑置 (運行時間IDLE) 和暫停。

延遲模式應該透過延遲模式使用量的值來指出 (頁面 0x0D、使用量 0x60)在延遲模式功能報告中。

延遲模式值 延遲模式
0 正常
1

整合式 Windows 手寫筆輸入報告

下表中的使用方式是由主機透過整合式 Windows 手寫筆集合,從輸入報表擷取畫筆數據。 下表顯示報告手寫筆的所有必要用法和 Windows 支援的選擇性用法。

member 描述 識別碼 強制/選擇性 HLK 的必要專案
X 聯繫人位置的 X 座標 0x01 0x30 必要 Yes
Y 聯繫人位置的 Y 座標 0x01 0x31 必要 Yes
提示 如果畫筆位於數位板表面,請設定 0x0D 0x42 必要 Yes
範圍內 指出畫筆是否在數位板範圍內 0x0D 0x32 必要 Yes
桶形按鈕 位於畫筆側的按鈕狀態 0x0D 0x44 必要 Yes
Invert 表示畫筆的方向表示有意清除 0x0D 0x3C 選擇性 Yes
橡皮擦 表示手寫筆正在清除 0x0D 0x45 選擇性 Yes
提示壓力 筆尖施加的壓力 0x0D 0x30 選擇性 Yes
掃描時間 每個畫面的相對掃描時間 0x0D 0x56 選擇性 No
X 傾斜 沿著 X 軸傾斜畫筆的角度 0x0D 0x3D 選擇性 No
Y 傾斜 沿著Y軸傾斜畫筆的角度 0x0D 0x3E 選擇性 No
扭曲 手寫筆順時針旋轉 0x0D 0x41 選擇性 No
換位器序號 換能器的唯一持續性標識碼 0x0D 0x5B 選擇性 No
換能序號 - 第 2 部分 用於將換能器序號擴充為額外 32 位 0x0D 0x6E 選擇性 No
換位廠商標識碼 換能器的廠商指派的標識碼 0x0D 0x91 選擇性 No

下表顯示整合式 Windows 手寫筆輸入報表的必要報表層級使用方式。

member 描述 識別碼 強制/選擇性
報表標識碼 整合式 Windows 手寫筆報表標識碼 0x0D 0x02 必要

強制和 Windows 支援的選擇性使用方式

任何未報告聯繫人或報表層級之所有強制使用狀況的裝置,都將無法作為整合式 Windows 手寫筆裝置運作。 Windows 主機會嚴格強制執行強制使用方式。 如果未設定邏輯最大值,則可以將值優化以減少描述元大小。

下列各節提供有關先前表格所呈現之必要和 Windows 支援的選擇性使用方式的詳細數據。

X、Y

XY 會報告整合式畫筆的座標。 應該針對 XY 用法指定下列全域專案:

  • 實體下限和實體上限

  • 單位和單位指數

  • 邏輯最小值和邏輯最大值(確保輸入解析度 >= 150DPI)

    注意 整個邏輯座標範圍應該可 跨 X 軸和 Y 軸報告。

手寫筆提示

用來指出筆尖在表面上,或已離開數位板的表面。 這是由報表大小為1位的主要專案表示。 傳遞輸入報表時,當畫筆位於數位板表面時,應該設定位,並在畫筆離開表面時清除。

當報表數據流中第一次報告畫筆時,提示切換清除時,所報告的 X/Y 位置應該與設定小費參數所報告的最後一個位置相同。

範圍內

用來指出筆尖(或尾端橡皮擦)是否在數位板範圍內。 這是由報表大小為1位的主要專案表示。 傳遞輸入報表時,當畫筆提示(或尾端橡皮擦)位於數位板表面或數位板的可偵測範圍內時,應該設定位,並在無法再偵測手寫筆時清除。 請注意,只有當畫筆的 X/Y 位置可以可靠地報告時,以及 Windows 10 的 Pen HLK 需求所設定的參數內,才應該報告 In-Range。

當手寫筆回報時,已清除範圍中的參數時,所報告的 X/Y 位置應該與設定範圍內切換時所報告的最後一個位置相同。

桶形按鈕

用來指出手寫筆側邊的按鈕何時會壓低。 這是由報表大小為1位的主要專案表示。 傳遞輸入報告時,應該在按下此按鈕時設定位,並在按鈕放開時清除。

Invert

用來指出筆的方向是否表示打算清除。 這是由報表大小為1位的主要專案表示。 以下是不同橡皮擦實作的一些輸入報告指導方針:

  • 尾端橡皮擦實作

    傳遞輸入報告時,應該在筆反轉時設定位,並在筆未反轉時清除。

  • 橡皮擦按鈕實作

    傳遞輸入報告時,每當橡皮擦按鈕壓低時,應該設定位,而畫筆位於數位板的範圍內,否則清除。

橡皮擦

用來指出手寫筆何時清除。 這是由報表大小為1位的主要專案表示。 以下是不同橡皮擦實作的一些輸入報告指導方針:

  • 尾端橡皮擦實作

    傳遞輸入報告時,每當畫筆反轉並與螢幕接觸時,應該設定位,否則會清除。

  • 橡皮擦按鈕實作

    傳遞輸入報告時,每當橡皮擦按鈕壓低且筆尖與屏幕接觸時,應該設定位,否則會清除。

    為了避免不小心啟動或取消此實作中的清除功能,強烈建議一旦筆尖與螢幕接觸,壓低或放開清除按鈕應該不會影響橡皮擦位的報告。

當報表數據流中第一次報告畫筆時,清除清除開關時,所報告的 X/Y 位置應該與設定清除切換時所報告的最後一個位置相同。

掃描時間

掃描時間會以100個單位回報相對數位板時間。 當裝置在一段非使用期間之後開始報告數據時,掃描時間代表從報告到報表時間的第一個畫面的時間範圍。 第一次收到的掃描時間會被視為後續報告時間的基底時間。 報告掃描時間之間的經過時間應該會反映數位板的掃描頻率。 請務必注意,與其他使用方式不同,如果已實作,主機就不允許單位在掃描時間使用量上有任何彈性。 它必須是100個單位。 值預期會變換,因為只有 2 個字節配置給計數器。

提示壓力

用來指出要套用至筆尖的壓力。 這是由報表大小至少 8 位的主要專案表示,以容納至少 256 個不同的壓力水準。 若要報告其他數據粒度,您必須使用較大的報表大小。

報告壓力的邏輯值應盡可能貼近下圖所示的理想對數曲線。 適用於 Windows 10 的 Pen HLK 測試套件所提供的壓力測試,旨在確保報告的壓力曲線落在圖表中所指出的上限和下限內。 雖然圖表中的理想曲線及其相關聯的方程式是針對報告 256 個層級的裝置所概述,但是可以調整它們以容納任意數目的離散層級。

雖然橡皮擦開關在使用尾端橡皮擦的筆上沒有壓力感應能力,但筆尖壓力應報告 127 (最大壓力的 50%) 。 已選擇此值以支援在橡皮擦開關作用中時,可能會耗用實際尾端手寫筆壓力的手寫筆和應用程式。

此圖顯示報告 256 個不同壓力等級之裝置的理想畫筆尖壓力曲線。

X 傾斜

X-Tilt 代表 Y-Z 平面、包含畫筆換向軸的平面角度,以及 Y 軸。

具有正 x 傾斜的畫筆圖例

必須指定實體範圍和邏輯範圍。 實體範圍可能最多為 -90 到 90 度,不過描述元中報告的實體最小值/最大值應該對應到筆的實際最小/最大可達到的 X-Tilt,在正確的單位 (0x14, Degrees)。 邏輯範圍必須夠大,才能提供至少兩個小數位數的精確數據。 弧度也可用於實體範圍。 X-Tilt 是數位板原生方向中使用者右邊的正值。

Y 傾斜

Y-Tilt 代表 X-Z 平面、包含畫筆換向軸的平面和 Y 軸之間的平面角度。

具有負 Y 傾斜的畫筆圖例

必須指定實體範圍和邏輯範圍。 實體範圍可能上限為 -90 到 90 度,但是描述元中報告的實體最小值/最大值應該對應到正確單位中筆的實際最小/最大可達到的 Y-Tilt (0x14,Degrees)。 邏輯範圍必須夠大,才能提供至少兩個小數位數的精確數據。 弧度也可用於實體範圍。 Y-Tilt 對數位板原生方向的使用者呈正向。

扭曲

Twist 會指定手寫筆繞著自己的主軸順時針旋轉。

必須指定實體範圍和邏輯範圍。 實體範圍必須是 0 到 360。 邏輯範圍必須夠大,才能提供至少兩個小數位數的精確數據。 弧度也可用於實體範圍。 在此情況下,邏輯範圍必須夠大,才能報告精確到至少四個小數位數的值。

換位器序號

換位器序號是與畫筆數位板通訊之畫筆配件中所使用的換能器的唯一持續性標識符。 這必須是32位,並由廠商或廠商標識碼所識別的實體所定義。 如果數位板的換能序號未知,可能是因為畫筆配件不支援傳輸此值,或者尚未完全接收傳輸,數位板應向主機報告 0。 主機不支援 Null 位置。

換位器序號 – 第 2 部分

換能序號 – 第 2 部分允許指定額外的 32 位,作為筆配件中所用換能器的唯一持續性標識符的一部分。 如果數位板序號 – 數位板第 2 部分未知,因為畫筆配件不支援傳輸此值,或傳輸尚未完全接收,數位板應向主機報告 0。 主機不支援 Null 位置。

換位廠商標識碼

「換位器廠商標識碼」是一個字段,用來與畫筆數位板通訊之畫筆配件中使用的換能器製造商。 這必須是製造商的 2 位元組 USB-IF 指派廠商識別碼,或是 IHV/OEM 授權基於此目的使用其 USB-IF 廠商標識碼的 IHV/OEM 識別符。