通訊協定
MouseSource
定義於 fuchsia.ui.pointer/mouse.fidl
用戶端接收滑鼠游標事件的方法。
指標事件的位置是在檢視區塊的內容中定義,位於檢視區塊中。檢視畫面和可視區域的尺寸,以及兩者的空間關係 (以轉換矩陣定義),會同步提供在 |ViewParameter| 表格中。檢視區塊可套用檢視區塊至檢視區塊轉換矩陣,擷取指標在本機座標系統中的位置。
可視區域嵌入在獨立且穩定的座標系統中,適合以與比例無關的方式解譯指標事件;即使在放大或平移等效果下,系統也會以固定比例觀察滑鼠移動。不過,其他效果 (例如放大檢視畫面的剪輯邊界) 可能會觸發可視區域範圍的變更。
智慧手錶
用戶端接收滑鼠游標事件的方法。
這項呼叫會以「懸置 GET」模式的形式呈現:用戶端要求一組近期事件,並透過回呼接收這些事件。這種提取式做法可確保用戶端按照自己的步調使用事件,事件不會無限制地阻塞管道。
流量控制。呼叫端一次最多只能有一個進行中的 |Watch| 呼叫;同時呼叫 |Watch| 是邏輯錯誤。不遵守規定會導致管道關閉。
用戶端調節。伺服器會以先進先出、無損、盡力而為的方式,將事件分派給呼叫端,但呼叫端必須分配足夠的時間,才能跟上新事件。
活動時間。事件向量中每個事件的時間戳記「不」保證單調;來自不同裝置的事件可能會在不同時間插入 Scenic。一般來說,來自單一裝置的事件應具有單調遞增的時間戳記。
查看參數。有時,檢視畫面或可視區域的變更需要通知用戶端。如果 |MouseEvent| 包含 |ViewParameters|,這些參數會套用至後續的 |MousePointerSample|,直到下一個 |ViewParameters|。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
events |
vector<MouseEvent>:128
|
MouseSourceV2
定義於 fuchsia.ui.pointer/mouse.fidl
用戶端接收滑鼠游標事件的推送式讀取器通訊協定。
連線後會自動開始串流。Scenic 會在懸停片段中調度滑鼠事件,從 ENTERED 開始,並在游標離開檢視畫面時以 EXITED 結束。
流量控制和確認規則:
- 如果伺服器未收到用戶端的確認,則推送的事件不會超過
MOUSE_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS個 (或產品設定的上限)。當未確認的事件數量達到這個上限時,伺服器 (Scenic) 會限制事件傳送。 - 用戶端應定期傳送確認訊息 (例如在達到上限前,像是剩餘 20 個抵免額時),以免受到限制。
- 無行頭阻塞:由於管道和抵免額上限是依檢視獨立設定,因此無法確認
EXITED事件的慢速用戶端只會封鎖自己的管道。Scenic 可以立即開始將事件推送至新懸停的用戶端,並在自己的管道上進行。
指標事件的位置是在檢視區塊的背景中定義,位於檢視畫面中,與 MouseSource 相同。
AcknowledgeEvents
確認收到事件,最多 last_acknowledged_event_stamp。
這會授予伺服器「抵免額」,以便傳送更多事件。如果傳送的所有事件 last_event_stamp 小於或等於 last_acknowledged_event_stamp,系統會將這些事件視為已確認。
當未確認的事件達到 MOUSE_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS (或產品設定的上限) 時,伺服器 (Scenic) 會限制事件傳送。用戶端應定期傳送確認訊息 (例如在達到上限前,像是剩餘 20 個抵免額時),以免受到限制。
last_acknowledged_event_stamp 必須嚴格遞增。
如未遵守規定,管道將遭到關閉。
要求
| 名稱 | 類型 |
|---|---|
last_acknowledged_event_stamp |
uint64
|
OnMouseEvents
將滑鼠游標事件從伺服器推送至用戶端。
連線後會自動開始串流。如果伺服器未收到確認,推送的事件數量不會超過 MOUSE_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS 個 (或產品設定的上限)。當未確認的事件數量達到這個上限時,伺服器會限制事件傳送。
回應
| 名稱 | 類型 |
|---|---|
events |
vector<MouseEvent>:128
|
last_event_stamp |
uint64
|
TouchSource
定義於 fuchsia.ui.pointer/touch.fidl
用戶端接收觸控事件,並在全域手勢消歧通訊協定中回應的方法。
觸控事件的位置是在檢視區塊的背景中定義,位於檢視畫面中。檢視畫面和可視區域的尺寸,以及兩者的空間關係 (以轉換矩陣定義),會同步提供在 |ViewParameter| 表格中。檢視區塊可套用檢視區塊至檢視區塊轉換矩陣,擷取指標在本機座標系統中的位置。
可視區域內嵌在獨立且穩定的座標系統中,適合以與比例無關的方式解讀觸控事件;即使在放大或平移等效果下,系統也會以固定比例觀察滑動。不過,其他效果 (例如放大檢視畫面的剪輯邊界) 可能會觸發可視區域範圍的變更。
UpdateResponse
手勢通訊協定可讓用戶端對觸控事件的開放互動執行「保留」;即使互動結束,也能防止互動擁有權解析。這個方法會更新用戶端先前的「保留」狀態,並以允許繼續解決擁有權問題的回應取代。
請參閱 |TouchInteractionId|,瞭解串流如何結構化為互動。
流量控制。呼叫端在每次互動中最多只能發出一個 |UpdateResponse| 呼叫,且必須在已關閉的互動中進行。如果 |Watch| 呼叫可以傳回正常回應,呼叫 |UpdateResponse| 就是邏輯錯誤。
有效性。這個 TouchResponse 不得為另一個「hold」回應,且覆寫的回應應為「hold」回應。
要求
| 名稱 | 類型 |
|---|---|
interaction |
TouchInteractionId
|
response |
TouchResponse
|
回應
<EMPTY>
智慧手錶
用戶端接收觸控指標事件的方法。
這項呼叫會以「懸置 GET」模式的形式呈現:用戶端要求一組近期事件,並透過回呼接收這些事件。這種提取式做法可確保用戶端按照自己的步調使用事件,事件不會無限制地阻塞管道。
流量控制。呼叫端一次最多只能有一個進行中的 |Watch| 呼叫;同時呼叫 |Watch| 是邏輯錯誤。不遵守規定會導致管道關閉。
用戶端調節。伺服器會以先進先出、無損、盡力而為的方式,將事件分派給呼叫端,但呼叫端必須分配足夠的時間,才能跟上新事件。無回應的用戶端可能會歸類為「應用程式無回應」,並列為關閉管道的目標。
回應。手勢消除歧義配置仰賴伺服器接收每個 |TouchEvent| 的 |TouchResponse|。|TouchPointerSample|;非樣本事件應將空白 |TouchResponse| 表格傳回伺服器。系統會在 *下次* 呼叫 |Watch| [1] 時,將*先前* 事件的回應傳送至伺服器。|responses| 向量中的每個元素都會解讀為對前一個 |events| 向量中事件的成對回應;向量長度必須相符。請注意,用戶端與 Scenic 註冊端點後,回應事件的合約就會立即生效,而「不是」在首次呼叫 Watch() 時。
初步回應。第一次呼叫 |Watch| 時,必須是空白向量。
活動時間。事件向量中每個事件的時間戳記不保證單調;來自不同裝置的觸控事件可能會在不同時間插入 Scenic。一般來說,單一裝置的事件時間戳記應會單調遞增。
查看參數。有時,檢視畫面或可視區域的變更需要通知用戶端。如果 |TouchEvent| 包含 |ViewParameters|,這些參數會套用至後續的 |TouchPointerSample|,直到下一個 |ViewParameters|。
[1] 懸置 GET 模式可讓 API 輕鬆演進,但遺憾的是,它不允許對事件的回應進行慣用比對。
要求
| 名稱 | 類型 |
|---|---|
responses |
vector<TouchResponse>:128
|
回應
| 名稱 | 類型 |
|---|---|
events |
vector<TouchEvent>:128
|
TouchSourceV2
定義於 fuchsia.ui.pointer/touch.fidl
用戶端接收觸控事件的推送式讀取器通訊協定。
不支援合作手勢消歧 (一律消耗模型)。如果 Scenic 同時有 V1 和 V2 用戶端在檢視畫面樹狀結構中競爭相同的觸控互動,Scenic 的手勢競技場會隱含地將 V2 用戶端視為立即回應 YES (宣告擁有權) 所有指標樣本。接著,系統會根據標準優先順序規則,針對其他第 1 版用戶端的明確回應 (例如 YES、MAYBE 或 HOLD),解析手勢擁有權。
如果用戶端需要合作手勢消歧或增強功能 (例如使用 LocalHit 的無障礙子系統),則必須繼續使用提取式 TouchSource 通訊協定。
流量控制和確認規則:
- 如果伺服器未收到用戶端的確認,則推送的事件不會超過
TOUCH_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS個 (或產品設定的上限)。當未確認的事件數量達到這個上限時,伺服器 (Scenic) 會限制事件傳送。 - 用戶端應定期傳送確認訊息 (例如在達到上限前,像是剩餘 20 個抵免額時),以免受到限制。
- 無行頭阻塞:由於管道和抵免額上限是依檢視獨立,因此無法確認終端事件的慢速用戶端只會封鎖自己的管道。Scenic 可以立即開始將事件推送至其他檢視畫面。
與 TouchSource 相同,只有在觸控座標與檢視畫面的其中一個有效點擊區域成功交集時 (透過 Scenic 的全域點擊測試判定),Scenic 才會將觸控事件分派至 TouchSourceV2 管道。如果點擊測試失敗或指定其他檢視畫面,系統就不會將任何觸控事件轉送至這個用戶端的 TouchSourceV2 管道,藉此保留 Fuchsia UI 系統的安全防護邊界。
觸控事件的位置是在檢視區塊的背景中定義,位於檢視區塊中,與 TouchSource 相同。
AcknowledgeEvents
確認收到事件,最多 last_acknowledged_event_stamp。
這會授予伺服器「抵免額」,以便傳送更多事件。如果傳送的所有事件 last_event_stamp 小於或等於 last_acknowledged_event_stamp,系統會將這些事件視為已確認。
當未確認的事件達到 TOUCH_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS (或產品設定的上限) 時,伺服器 (Scenic) 會限制事件傳送。用戶端應定期傳送確認訊息 (例如在達到上限前,像是剩餘 20 個抵免額時),以免受到限制。
last_acknowledged_event_stamp 必須嚴格遞增。
如未遵守規定,管道將遭到關閉。
要求
| 名稱 | 類型 |
|---|---|
last_acknowledged_event_stamp |
uint64
|
OnTouchEvents
將觸控事件從伺服器推送至用戶端。
連線後會自動開始串流。如果伺服器未收到確認,推送的事件數量不會超過 TOUCH_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS 個 (或產品設定的上限)。當未確認的事件數量達到這個上限時,伺服器會限制事件傳送。
回應
| 名稱 | 類型 |
|---|---|
events |
vector<TouchEvent>:128
|
last_event_stamp |
uint64
|
STRUCTS
MouseEventStreamInfo
定義於 fuchsia.ui.pointer/mouse.fidl
滑鼠事件串流的狀態,從伺服器傳送至用戶端。
不變量:用戶端的滑鼠事件會以 MouseViewStatus.ENTERED 和 MouseViewStatus.EXITED 括住。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
device_id |
uint32
|
滑鼠裝置的 ID,用於發出滑鼠事件串流。 |
無預設值 |
status |
MouseViewStatus
|
滑鼠事件串流的進入/離開狀態,從伺服器傳送至用戶端。 |
無預設值 |
MouseSourceWatchResponse 資源
定義於 fuchsia.ui.pointer/mouse.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
events |
vector<MouseEvent>:128
|
無預設值 |
Rectangle
定義於 fuchsia.ui.pointer/view.fidl
與軸對齊的矩形。定義方式是在座標系統中指定最小和最大範圍。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
min |
Point2
|
這個矩形的最小範圍 (含)。
|
無預設值 |
max |
Point2
|
這個矩形的最大範圍 (含)。
|
無預設值 |
TouchInteractionId
定義於 fuchsia.ui.pointer/touch.fidl
事件串流中觸控事件「互動」的專屬 ID。觸控事件會視為一連串的互動,因為手指會與螢幕接觸和脫離。
遵循 EventPhase 狀態機、從初始狀態 ADD 開始的有限指標事件序列,稱為「互動」。已關閉 (或過去) 的互動是指已達到終端狀態 (REMOVE 或 CANCEL) 的互動;未關閉 (或目前) 的互動是指尚未達到終端狀態的互動。
對於特定裝置指標,系統會觀察到一連串事件,包括零或多個封閉互動 (使用者參與度的過往記錄),以及最多一個開放互動 (目前的使用者參與度)。
由於我們需要依互動將指標事件分組,因此觸控事件會包含在該指標串流中不重複的互動 ID。這個共同參考點可讓您在封閉和開放互動中運作。
另請參閱 EventPhase,瞭解滑鼠事件串流。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
device_id |
uint32
|
發出觸控事件串流的指標裝置 ID。一部裝置可能擁有多個指標,每個指標都有自己的 |pointer_id|。 |
無預設值 |
pointer_id |
uint32
|
發出此事件的指標 ID。只有特定 |device_id| 專屬。每個 (device_id, pointer_id) 配對一次最多只能發出一個開放互動。 |
無預設值 |
interaction_id |
uint32
|
互動 ID。只有特定 (device_id, pointer_id) 配對才會有專屬 ID。 |
無預設值 |
TouchInteractionResult
定義於 fuchsia.ui.pointer/touch.fidl
觸控事件互動的手勢消除歧義結果,從伺服器傳送至用戶端。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
interaction |
TouchInteractionId
|
這個指標樣本所屬的互動。 |
無預設值 |
status |
TouchInteractionStatus
|
互動的處理結果,從伺服器傳送至用戶端。 |
無預設值 |
TouchSourceWatchResponse 資源
定義於 fuchsia.ui.pointer/touch.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
events |
vector<TouchEvent>:128
|
無預設值 |
ViewParameters
定義於 fuchsia.ui.pointer/view.fidl
相關聯檢視畫面和可視區域的參數,足以正確解讀分派至這個檢視畫面的指標事件位置和比例。
排序。這些參數會透過與指標事件相同的管道傳送,提供同步情境,用於解讀指標事件在檢視畫面本機座標系統中的位置。
跨通訊協定備援。其中部分參數也可能透過專門用於檢視控制的獨立管道傳送;用戶端必須正確使用非同步接收的參數。
TODO(https://fxbug.dev/42162292): Rename viewport, it is used in Flatland.
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
view |
Rectangle
|
檢視畫面的內容區域,位於檢視畫面的座標系統中。 矩形是由父項檢視畫面在這個檢視畫面上的裁剪設定定義。 |
無預設值 |
viewport |
Rectangle
|
可視區域的互動區域,位於獨立的座標系統中。 指標事件的位置是在這個可視區域的座標系統中定義。 可視區域範圍變更,代表指標互動區域本身已移動、大小變更,或兩者皆有。 |
無預設值 |
viewport_to_view_transform |
Mat3
|
轉換矩陣,可將可視區域座標系統中的點位置,與檢視畫面座標系統中的點位置建立關聯。 |
無預設值 |
ENUMS
EventPhase strict
類型:uint32
定義於 fuchsia.ui.pointer/state.fidl
指標事件的可能狀態。串流中的這些事件階段會遵循狀態機器,從 ADD 階段開始,接著是零或多個 CHANGE 階段,最後以 REMOVE 或 CANCEL 階段終止。
ADD ---> CHANGE* -+-> REMOVE
|
+-> CANCEL
從初始狀態開始,遵循這個狀態機的有限指標事件序列稱為「互動」。已關閉 (或過去) 的互動是指已達到終端狀態的互動;未關閉 (或目前) 的互動是指未達到終端狀態的互動。
對於特定裝置指標,系統會觀察到一連串事件,包括零或多個封閉互動 (使用者參與度的過往記錄),以及最多一個開放互動 (目前的使用者參與度)。
當我們需要依互動將指標事件分組時,事件會攜帶在該指標串流中不重複的互動 ID。這個通用參照可讓您對封閉式互動和開放式互動執行操作。
舉例來說,觸控事件通常會觀察到一連串的互動,例如手指與螢幕接觸和脫離。
| 名稱 | 值 | 說明 |
|---|---|---|
ADD |
1 |
裝置已開始追蹤指標。 |
變更 |
2 |
裝置已回報指標狀態更新。 |
移除 |
3 |
裝置已停止追蹤指標。 |
取消 |
4 |
指標已無法使用。 |
MouseViewStatus strict
類型:uint32
定義於 fuchsia.ui.pointer/mouse.fidl
滑鼠事件串流與這個檢視畫面的關係說明。
| 名稱 | 值 | 說明 |
|---|---|---|
ENTERED |
1 |
串流會導向這個檢視畫面。 |
EXITED |
2 |
串流會從這個檢視畫面導向其他位置。 |
TouchInteractionStatus strict
類型:uint32
定義於 fuchsia.ui.pointer/touch.fidl
互動與這個用戶端之間的關係說明。
| 名稱 | 值 | 說明 |
|---|---|---|
拒絕 |
1 |
用戶端無法取得互動項目的擁有權。 |
已授予 |
2 |
用戶端已取得互動的擁有權。 |
TouchResponseType strict
類型:uint32
定義於 fuchsia.ui.pointer/touch.fidl
用戶端可針對特定 |TouchPointerSample| 回應的可能互動處置。用於手勢消除歧義配置。
回覆內容是根據互動擁有權聲明的概念。用戶端可以對開放式互動聲明擁有權,但伺服器只會授予一個用戶端的聲明,其他用戶端的聲明則會遭到拒絕。
| 名稱 | 值 | 說明 |
|---|---|---|
否 |
1 |
用戶端對這項互動不感興趣,因此拒絕互動擁有權。用戶端會停止接收這項互動的事件。 |
不確定 |
2 |
用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明這項互動的擁有權。 |
MAYBE_PRIORITIZE |
3 |
用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。在擁有權解析期間,這類聲明的優先順序高於優先順序較低的「可能」聲明,但一律低於「是」聲明。 |
MAYBE_SUPPRESS |
4 |
用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。此外,系統也會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。 |
MAYBE_PRIORITIZE_SUPPRESS |
5 |
用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。此外,系統也會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。在擁有權解析期間,系統會優先處理「可能」聲明,但一律會優先處理「是」聲明。 |
保留 |
6 |
用戶端對這項互動感興趣,但需要查看後續互動才能決定;用戶端尚未聲明這項互動的擁有權。這可避免在互動結束時解析擁有權。 |
HOLD_SUPPRESS |
7 |
用戶端對這項互動感興趣,但需要查看後續互動才能決定;用戶端尚未聲明這項互動的擁有權。這可避免在互動結束時解析擁有權。此外,系統會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。 |
是 |
8 |
用戶端希望獨佔這項互動中的其餘事件,因此聲明擁有這項互動 (但這項聲明可能會獲得核准或遭到拒絕)。在擁有權爭議解決期間,這類聲明會將優先順序讓給優先順序較低的「是」聲明。 |
YES_PRIORITIZE |
9 |
用戶端希望獨佔這項互動中的其餘事件,因此聲明擁有這項互動 (但這項聲明可能會獲得核准或遭到拒絕)。在擁有權解析期間,系統會優先處理這類聲明,而非優先順序較低的「是」聲明。 |
TABLES
MouseDeviceInfo
定義於 fuchsia.ui.pointer/mouse.fidl
發出滑鼠事件串流的裝置相關資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint32
|
滑鼠裝置的 ID,用於發出滑鼠事件串流。必填。 |
2 |
scroll_v_range |
fuchsia.input.report/Axis
|
裝置發出的垂直捲動值範圍。 |
3 |
scroll_h_range |
fuchsia.input.report/Axis
|
裝置發出的水平捲動值範圍。 |
4 |
buttons |
vector<uint8>:32
|
裝置核發的按鈕 ID,依優先順序排列。 |
5 |
relative_motion_range |
RelativeMotionRange
|
裝置發出的相對移動值範圍。 |
MouseEvent 資源
定義於 fuchsia.ui.pointer/mouse.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
timestamp |
zx/Time
|
觀察到這個事件的時間。必填。 |
2 |
view_parameters |
ViewParameters
|
相關聯檢視畫面和可視區域的參數,足以正確解讀傳送至檢視畫面的指標事件位置、方向、大小和事件間距離。
|
3 |
device_info |
MouseDeviceInfo
|
滑鼠裝置的說明,足以正確解讀裝置的功能和使用意圖。
|
4 |
pointer_sample |
MousePointerSample
|
滑鼠事件串流中每個樣本資料點的說明。 核發政策。調度模式有兩種:「懸停」和「鎖定」。預設為懸停模式,串流會以片段形式分派給滑鼠事件懸停的顯示用戶端。鎖定模式會將串流導向單一用戶端 (不論檢視邊界為何),直到解除鎖定為止。使用者按下主要滑鼠按鈕時,通常會切換鎖定模式,但這最終取決於產品專屬政策。 |
5 |
stream_info |
MouseEventStreamInfo
|
懸停模式下檢視畫面進入/離開的信號。
|
6 |
trace_flow_id |
uint64
|
用於關聯此事件在元件邊界或抽象層之間的傳送/接收事件的 ID。 |
7 |
wake_lease |
handle<eventpair>
|
可選用的喚醒租約,用於傳遞電源接力棒。 |
MousePointerSample
定義於 fuchsia.ui.pointer/mouse.fidl
滑鼠事件串流中每個樣本資料點的說明。
MousePointerSample 可能會將多個狀態變更合併為一個事件。舉例來說,如果使用者同時捲動滑鼠滾輪並按下左鍵,用戶端可能會在 1 個事件中同時收到捲動和按鈕狀態變更,或在不同事件中收到按鈕變更和捲動變更。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
device_id |
uint32
|
滑鼠裝置的 ID,用於發出滑鼠事件串流。必填。 |
2 |
position_in_viewport |
Point2
|
這個事件在可視區域座標系統中的位置。必填。 |
3 |
scroll_v |
int64
|
依定位點計算的相對垂直捲動位移。 |
4 |
scroll_h |
int64
|
依定位點相對水平捲動位移。 |
5 |
pressed_buttons |
vector<uint8>:32
|
目前按下的按鈕 ID。 |
6 |
relative_motion |
RelativeMotion
|
執行的相對移動,與可視區域的座標系統無關。 |
7 |
scroll_v_physical_pixel |
float64
|
建議的垂直捲動位移 (以實體像素為單位),計算方式是使用加速器、定位點/公釐與像素的比率等。 |
8 |
scroll_h_physical_pixel |
float64
|
建議的水平捲動位移 (以實體像素為單位),計算方式包括加速器、定位點/公釐與像素的比率等。 |
9 |
is_precision_scroll |
bool
|
指出捲動事件是否來自精確捲動裝置 (HI_RES 滑鼠或觸控板)。用戶端可能想在非精確捲動裝置上播放內插動畫,以便順暢捲動。 |
TouchDeviceInfo
定義於 fuchsia.ui.pointer/touch.fidl
發出觸控事件串流的裝置相關資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint32
|
觸控裝置的 ID,用於發出觸控事件串流。裝置可能擁有多個指標,每個指標都有自己的指標 ID 和觸控事件串流。必填。 |
TouchEvent 資源
定義於 fuchsia.ui.pointer/touch.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
timestamp |
zx/Time
|
觀察到這個事件的時間。必填。 |
2 |
view_parameters |
ViewParameters
|
相關聯檢視畫面和可視區域的參數,足以正確解讀分派至檢視畫面的觸控事件位置、方向、大小和事件間距離。
|
3 |
device_info |
TouchDeviceInfo
|
指標裝置的說明,足以正確解讀裝置的功能和用途。
|
4 |
pointer_sample |
TouchPointerSample
|
觸控事件互動中各個樣本資料點的說明。
|
5 |
interaction_result |
TouchInteractionResult
|
觸控事件互動的手勢消除歧義結果。
|
6 |
trace_flow_id |
uint64
|
用於關聯此事件在元件邊界或抽象層之間的傳送/接收事件的 ID。 |
7 |
wake_lease |
handle<eventpair>
|
可選用的喚醒租約,用於傳遞電源接力棒。 |
TouchPointerSample
定義於 fuchsia.ui.pointer/touch.fidl
觸控事件串流中各個樣本資料點的說明。所有欄位均為必填。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
interaction |
TouchInteractionId
|
這個指標樣本所屬的互動。 |
2 |
phase |
EventPhase
|
這個事件在互動狀態機中的狀態。 |
3 |
position_in_viewport |
Point2
|
這個事件在可視區域座標系統中的位置。 |
TouchResponse
定義於 fuchsia.ui.pointer/touch.fidl
每個 |Event| 的意見回饋事件,從用戶端傳送至伺服器。
只有 |TouchPointerSample| 需要 |TouchResponseType|;對於其他事件,伺服器預期會收到空白的 |TouchResponse| 資料表。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
response_type |
TouchResponseType
|
用戶端針對特定 |TouchPointerSample| 回應的互動處置。 |
2 |
trace_flow_id |
uint64
|
這個 ID 用於關聯此回應在元件邊界或抽象層之間的傳送/接收事件。 |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MOUSE_MAX_EVENT |
128
|
uint32 |
|
| MOUSE_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS |
150
|
uint32 |
MouseSourceV2 預設允許的未確認事件數量上限。 反映一般 240Hz 感應器取樣率約 0.625 秒 (625 毫秒) 的緩衝事件。 當未確認的事件達到這個上限時,伺服器 (Scenic) 會限制事件傳送。用戶端應定期傳送確認訊息 (例如在達到上限前,例如剩餘 20 個抵免額時),以免受到限制。 新增:33
|
| TOUCH_MAX_EVENT |
128
|
uint32 |
|
| TOUCH_SOURCE_V2_MAX_UNACKNOWLEDGED_EVENTS |
150
|
uint32 |
TouchSourceV2 允許未確認事件的預設數量上限。 反映一般 240Hz 觸控感應器取樣率約 0.625 秒 (625 毫秒) 的緩衝事件。 當未確認的事件數量達到這個上限時,伺服器 (Scenic) 會限制事件傳送。用戶端應定期傳送確認訊息 (例如在達到上限前,例如剩餘 20 個抵免額時),以免受到限制。 新增:33
|
別名
| 名稱 | 值 | 說明 |
|---|---|---|
| Mat3 |
array[9] |
浮點 3x3 矩陣。
|
| Point2 |
array[2] |
浮點二維點。
|
| RelativeMotion |
array[2] |
滑鼠裝置執行的相對動作。
|
| RelativeMotionRange |
array[2] |
新增:32
|