通訊協定
MouseSource
在 fuchsia.ui.pointer/mouse.fidl 中定義的
讓用戶端接收滑鼠指標事件的方法。
指標事件的位置是在可視區域中定義 放在檢視畫面中。檢視畫面和可視區域的維度 空間關係 (由轉換矩陣定義) 同步於 |ViewParameter|表格。檢視畫面可能會擷取指標的 套用檢視區位置,以採用其本機座標系的位置 轉換矩陣
可視區域內嵌於獨立的穩定座標系統中 適用於以獨立資源調度方式解讀指標事件; 即使在影響下,移動的滑鼠移動方式 以及放大或平移但其他效果 可能會觸發可視區域範圍的變更。
觀看
讓用戶端接收滑鼠指標事件的方法。
系統將這通電話公式設計成「掛斷電話」模式:用戶端會要求 一組近期事件,並透過回呼接收這些事件。這個 提取式方法可確保用戶端自行使用事件 pace;事件就不會無限期地干擾管道
流量控制。來電者最多只可供一次通話 |觀看|通話 一次只能執行一次對 |Watch| 同時呼叫也是邏輯錯誤。 違反規定會導致管道關閉。
用戶端使用速度。伺服器會透過 FIFO 呼叫呼叫端 盡可能避免損失且最大化,但呼叫端必須分配足夠時間, 隨時掌握最新活動消息。
活動時間。事件向量中每個事件的時間戳記「不」 保證單調的系統可能會注入不同裝置的事件 風景在不同時間的美景。一般而言,來自單一裝置的事件會 會有單調遞增的時間戳記
查看參數。有時候,變更檢視畫面或可視區域需要 通知用戶端。如果 |MouseEvent|Carries |ViewParameters|,這些 參數會套用至連續的 |MousePointerSample|s,直到下一個 |ViewParameters|。
要求
<空白>
回應
名稱 | 類型 |
---|---|
events |
vector<MouseEvent>[128]
|
TouchSource
在 fuchsia.ui.pointer/touch.fidl 中定義
讓用戶端接收觸控事件並在全域內回應的方法 手勢去除混淆通訊協定。
觸控事件的位置是在可視區域中定義 放在檢視畫面中。檢視畫面和可視區域的維度 空間關係 (由轉換矩陣定義) 同步於 |ViewParameter|表格。檢視畫面可能會擷取指標的 套用檢視區位置,以採用其本機座標系的位置 轉換矩陣
可視區域內嵌於獨立的穩定座標系統中 適用於以獨立資源調度方式解讀觸控事件;換 即使是在像諸如此類效果下 放大或平移。但其他效果 可能會觸發可視區域範圍的變更。
UpdateResponse
手勢通訊協定可讓用戶端以「保留」的方式CANNOT TRANSLATE 觸控事件的互動;就無法解決 擁有權。這個方法會更新 客戶先前的「訴訟保留」以便將其替換為 擁有權解決程序才能繼續操作。
請參閱 |TouchInteractionId|將串流分為多個部分 互動情形
流量控制。呼叫端最多只能有一個 |UpdateResponse|通話 且必須是封閉式互動。是邏輯 呼叫 |UpdateResponse| 時發生錯誤出現適當的回應 |觀看|呼叫。
有效性。這個 Touch 回應 不得為其他「保留」回應,以及 遭覆寫的回應回應。
要求
名稱 | 類型 |
---|---|
interaction |
TouchInteractionId
|
response |
TouchResponse
|
回應
<空白>
觀看
用戶端接收觸控指標事件的方法。
系統將這通電話公式設計成「掛斷電話」模式:用戶端會要求 一組近期事件,並透過回呼接收這些事件。這個 提取式方法可確保用戶端自行使用事件 pace;事件就不會無限期地干擾管道
流量控制。來電者最多只可供一次通話 |觀看|通話 一次只能執行一次對 |Watch| 同時呼叫也是邏輯錯誤。 違反規定會導致管道關閉。
用戶端使用速度。伺服器會透過 FIFO 呼叫呼叫端 盡可能避免損失且最大化,但呼叫端必須分配足夠時間, 隨時掌握最新活動消息。無回應的用戶端可歸類為 「應用程式沒有回應」並鎖定管道關閉
回應。這是因為伺服器採用的手勢去除混淆配置
接收 |TouchResponse|每個 |TouchEvent|.|TouchPointerSample|;
非範例事件應傳回空白 |TouchResponse|轉換為
伺服器系統會將先前事件的回應傳送至
下一個呼叫 |觀看|[1]。|responses| 中的每個元素向量是
會解讀為配對回應
|events|vector;向量長度必須相符請注意,用戶端的
合約會在登錄其事件後立即開始回應
呼叫 Watch()
的「終止」端點。
首要回應。第一次呼叫 |觀看|必須是空向量
活動時間。事件向量中每個事件的時間戳記「不」 保證單調的來自不同裝置的觸控事件 已成功在不同時間插入「景點」。通常來自單一事件 裝置的時間戳記應該為單調遞增。
查看參數。有時候,變更檢視畫面或可視區域需要 通知用戶端。如果是 |TouchEvent|Carries |ViewParameters|,這些 參數會套用至連續的 |TouchPointerSample|s |ViewParameters|。
[1] 持續的 get 模式可簡化 API 演變 很可惜,並未允許對事件的回應符合慣用語的比對方式。
要求
名稱 | 類型 |
---|---|
responses |
vector<TouchResponse>[128]
|
回應
名稱 | 類型 |
---|---|
events |
vector<TouchEvent>[128]
|
結構
MouseEventStreamInfo
在 fuchsia.ui.pointer/mouse.fidl 中定義的
滑鼠事件串流的狀態,從伺服器傳送至用戶端。
不變化:用戶端的滑鼠事件會以括號括住 MouseViewStatus.ENTERED 和 MouseViewStatus.EXITED。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
device_id |
uint32
|
核發滑鼠事件串流的滑鼠裝置 ID。 |
無預設 |
status |
MouseViewStatus
|
滑鼠事件串流的進入/離開狀態,會從伺服器傳送至用戶端。 |
無預設 |
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) 配對。 |
無預設 |
TouchInteractionResult
在 fuchsia.ui.pointer/touch.fidl 中定義
觸控事件互動的手勢區分結果,已傳送 伺服器之間的通訊
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
interaction |
TouchInteractionId
|
此指標範例所屬的互動。 |
無預設 |
status |
TouchInteractionStatus
|
互動配置 (從伺服器傳送至用戶端)。 |
無預設 |
ViewParameters
在 fuchsia.ui.pointer/view.fidl 中定義
相關檢視區塊和可視區域的參數,足以正確達到 解讀分派給這個檢視區塊的指標事件位置和比例。
訂購。這些參數來自與指標事件相同的管道; 提供同步內容以解譯指標位置 檢視畫面本機座標系統中的事件。
跨通訊協定備援。其中部分參數也可以透過 觀看控制項的獨立管道;客戶負責 正確用法。
TODO(https://fxbug.dev/42162292):重新命名可視區域,供 Flatland 使用。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
view |
Rectangle
|
檢視畫面的內容區域 (放置在檢視的座標系統中)。 矩形是由上層檢視區塊的裁剪設定所定義 檢視畫面。 |
無預設 |
viewport |
Rectangle
|
檢視區的互動區域 (置於獨立的座標中) 有些人會將 Cloud Storage 視為檔案系統 但實際上不是 指標事件的位置是在這次的座標系統中定義 檢視區域 可視區域範圍的變化表示指標互動的區域 大小改變、大小改變,或兩者皆有。 |
無預設 |
viewport_to_view_transform |
Mat3
|
與檢視區中點位置相關的轉換矩陣 座標系統與檢視畫面座標系統中的位置。 |
無預設 |
ENUMS
事件階段嚴格
類型:uint32
在 fuchsia.ui.pointer/state.fidl 中定義的
指標事件的可能狀態。串流中的事件階段
遵循開頭為 ADD
階段的狀態機器,後接零或
更多 CHANGE
個階段,最後以 REMOVE
或 CANCEL
終止
事實上,Gartner 的資料顯示
只有一半的企業機器學習專案通過前測階段
ADD ---> CHANGE* -+-> REMOVE
|
+-> CANCEL
遵循此狀態機器的有限序列指標事件 從初始狀態開始,稱為互動。已關閉 (或 過去) 互動是指達成最終狀態的情況;開啟 是指尚未發生 (或當前) 互動。
針對特定裝置指標,系統會視為連續的事件串流視為連續 零或多次關閉互動 (使用者過往的參與記錄) 隨後最多開啟一次互動 (目前的使用者參與度)。
當我們需要按互動次數將指標事件分組時,事件會發生 該指標串流中不重複的互動 ID。這種常見 參照表示可以在封閉式互動中執行 以及開放式互動
舉例來說,系統通常會將觸控事件視為連續 互動,像是手指進行互動或放下螢幕
名稱 | 值 | 說明 |
---|---|---|
ADD |
1 |
裝置已開始追蹤指標。 |
變更 |
2 |
裝置已回報指標狀態更新。 |
移除 |
3 |
裝置已停止追蹤指標。 |
取消 |
4 |
指標已無法使用。 |
MouseViewStatus 嚴格
類型:uint32
在 fuchsia.ui.pointer/mouse.fidl 中定義的
滑鼠事件串流與這個檢視畫面的關係說明。
名稱 | 值 | 說明 |
---|---|---|
已加入 |
1 |
系統將串流導向這個檢視畫面。 |
已結束 |
2 |
串流會從這個檢視畫面中移除。 |
TouchInteractionStatus 嚴格
類型:uint32
在 fuchsia.ui.pointer/touch.fidl 中定義
與此客戶的互動關係說明。
名稱 | 值 | 說明 |
---|---|---|
拒絕 |
1 |
用戶端已拒絕互動的擁有權。 |
已授予 |
2 |
用戶端已取得互動的擁有權。 |
TouchResponseType 嚴格
類型: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 |
客戶希望獲得專屬存取權 互動;它聲稱這次互動的擁有權 (但 允許或拒絕)。擁有權解決期間, 優先順序高於較低優先順序「是」著作權聲明。 |
資料表
MouseDeviceInfo
在 fuchsia.ui.pointer/mouse.fidl 中定義的
發出滑鼠事件串流的裝置相關資訊。
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
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 中定義的
能以自給自足且一致地收集指標相關資料 這個磁碟區
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
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 用來與此事件於下列期間的傳送/接收事件建立關聯: 也就是元件要素 |
MousePointerSample
在 fuchsia.ui.pointer/mouse.fidl 中定義的
滑鼠事件串流中每個取樣資料點的說明。
MousePointerSample
可以將多個狀態變更組合成一個事件。
舉例來說,如果使用者滾動滑鼠滾輪並按下左側臀部,
用戶端可能會收到捲動和按鈕狀態變更
或接收到按鈕變更和捲動變更
個別事件
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
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 中定義
發出觸控事件串流的裝置相關資訊。
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
id |
uint32
|
發出觸控事件串流的觸控裝置 ID。 裝置可以有多個指標,每個指標都有專屬的指標 ID 和 您自己的觸控事件串流 必填。 |
TouchEvent
在 fuchsia.ui.pointer/touch.fidl 中定義
能以自給自足且一致地收集指標相關資料 這個磁碟區
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
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 用來與此事件於下列期間的傳送/接收事件建立關聯: 也就是元件要素 |
TouchPointerSample
在 fuchsia.ui.pointer/touch.fidl 中定義
觸控事件串流中每個取樣資料點的說明。 所有欄位均為必填。
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
interaction |
TouchInteractionId
|
此指標範例所屬的互動。 |
2 |
phase |
EventPhase
|
此事件在互動的狀態機器中的狀態。 |
3 |
position_in_viewport |
Point2
|
此事件在可視區域座標系統中的位置。 |
TouchResponse
在 fuchsia.ui.pointer/touch.fidl 中定義
各事件|事件 (從用戶端傳送至伺服器) 的意見回饋事件。
僅限 |TouchPointerSample|需要 |TouchResponseType|;其他事件 伺服器預期會顯示空白 |TouchResponse|表格。
Ordinal | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
response_type |
TouchResponseType
|
用戶端在指定時間內回應的互動配置 |TouchPointerSample|。 |
2 |
trace_flow_id |
uint64
|
這個 ID 可在 也就是元件要素 |
觀測站
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MOUSE_MAX_EVENT |
128
|
uint32 |
|
TOUCH_MAX_EVENT |
128
|
uint32 |
ALIASES
名稱 | 值 | 說明 |
---|---|---|
Mat3 |
array [9 ] |
浮點 3x3 矩陣。
|
Point2 |
array [2 ] |
浮點 2D 點。
|
RelativeMotion |
array [2 ] |
滑鼠裝置執行的相對動作。
|
RelativeMotionRange |
array [2 ] |
滑鼠裝置的相對動作的有效值。
|