Fuchsia.ui.pointer

新增:7

通訊協定

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.ENTEREDMouseViewStatus.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 個階段,最後以 REMOVECANCEL 終止 事實上,Gartner 的資料顯示 只有一半的企業機器學習專案通過前測階段

ADD ---> CHANGE* -+-> REMOVE
                  |
                  +-> CANCEL

遵循此狀態機器的有限序列指標事件 從初始狀態開始,稱為互動。已關閉 (或 過去) 互動是指達成最終狀態的情況;開啟 是指尚未發生 (或當前) 互動。

針對特定裝置指標,系統會視為連續的事件串流視為連續 零或多次關閉互動 (使用者過往的參與記錄) 隨後最多開啟一次互動 (目前的使用者參與度)。

當我們需要按互動次數將指標事件分組時,事件會發生 該指標串流中不重複的互動 ID。這種常見 參照表示可以在封閉式互動中執行 以及開放式互動

舉例來說,系統通常會將觸控事件視為連續 互動,像是手指進行互動或放下螢幕

名稱說明
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

客戶對這項互動有興趣,但必須查看更多內容 做出決定客戶尚未聲明此擁有權 互動。

3

客戶對這項互動有興趣,但必須查看更多內容 做出決定客戶尚未聲明 互動。解決擁有權問題時,優先考量的重點在於 優先順序較低的「或許」但一定會失去「是」聲明。

4

客戶對這項互動有興趣,但必須查看更多內容 做出決定客戶尚未聲明 互動。此外,如果意圖低於優先度,試圖 解決互動擁有權的問題

5

客戶對這項互動有興趣,但必須查看更多內容 做出決定客戶尚未聲明 互動。此外,如果意圖低於優先度,試圖 解決互動擁有權的問題擁有權解決期間, 優先順序高於較低優先順序「或許」但一定會失去 「是」聲明。

6

客戶對這項互動感興趣,但需要瞭解 再做出決定用戶端尚未聲明擁有權 這個互動的擁有權。如此就能避免在 之間的互動結束。

7

客戶對這項互動感興趣,但需要瞭解 再做出決定用戶端尚未聲明擁有權 這個互動的擁有權。如此就能避免在 之間的互動結束。此外,系統也會抑制優先順序較低的版權聲明 嘗試解決互動擁有權的問題

8

客戶希望獲得專屬存取權 互動;它聲稱這次互動的擁有權 (但 允許或拒絕)。在擁有權解決期間, 優先順序由低至高「是」著作權聲明。

9

客戶希望獲得專屬存取權 互動;它聲稱這次互動的擁有權 (但 允許或拒絕)。擁有權解決期間, 優先順序高於較低優先順序「是」著作權聲明。

資料表

MouseDeviceInfo

fuchsia.ui.pointer/mouse.fidl 中定義的

發出滑鼠事件串流的裝置相關資訊。

Ordinal欄位類型說明
id uint32

核發滑鼠事件串流的滑鼠裝置 ID。 必填。

scroll_v_range fuchsia.input.report/Axis

裝置發出的垂直捲動值範圍。

scroll_h_range fuchsia.input.report/Axis

裝置核發的水平捲動值範圍。

buttons vector<uint8>[32]

裝置核發的按鈕 ID (按優先順序排列)。

relative_motion_range RelativeMotionRange

裝置發出的相對移動值範圍。

MouseEvent

fuchsia.ui.pointer/mouse.fidl 中定義的

能以自給自足且一致地收集指標相關資料 這個磁碟區

Ordinal欄位類型說明
timestamp zx/Time

觀察到這個事件的時間。 必填。

view_parameters ViewParameters

相關檢視和可視區域的參數 以便正確解讀您元素的位置、方向、規模 分派至檢視區塊的指標事件間距離。

  • 有連線且發生變更時核發。
device_info MouseDeviceInfo

滑鼠裝置的說明,足以正確解讀 裝置的功能性和使用意圖

  • 每部裝置只能核發一次。
pointer_sample MousePointerSample

滑鼠事件串流中每個取樣資料點的說明。

核發政策。系統提供「懸停」兩種調度模式和「閂鎖」。 懸停模式預設,且串流會透過片段分派給 每個滑鼠事件都移到上方可見的用戶端閂鎖模式導向 並將串流傳送到單一用戶端 (不論檢視界線為何),直到 未閂鎖。當使用者按下 主要滑鼠按鈕,但最終適用於特定產品的政策。

stream_info MouseEventStreamInfo

懸停模式使用者進入/結束的信號。

  • 當使用者懸停進入檢視區塊時,系統會發布至該檢視區塊,並將遊標懸停在檢視區塊中。
trace_flow_id uint64

這個 ID 用來與此事件於下列期間的傳送/接收事件建立關聯: 也就是元件要素

MousePointerSample

fuchsia.ui.pointer/mouse.fidl 中定義的

滑鼠事件串流中每個取樣資料點的說明。

MousePointerSample 可以將多個狀態變更組合成一個事件。 舉例來說,如果使用者滾動滑鼠滾輪並按下左側臀部, 用戶端可能會收到捲動和按鈕狀態變更 或接收到按鈕變更和捲動變更 個別事件

Ordinal欄位類型說明
device_id uint32

核發滑鼠事件串流的滑鼠裝置 ID。 必填。

position_in_viewport Point2

此事件在可視區域座標系統中的位置。 必填。

scroll_v int64

相對於實體的相對垂直捲動位置。

scroll_h int64

相對於實體的相對水平捲動位置。

pressed_buttons vector<uint8>[32]

目前所按下按鈕的 ID。

relative_motion RelativeMotion

執行的相對移動動作 (與檢視區的 座標系統

scroll_v_physical_pixel float64

我們建議以實際像素為單位的垂直捲動位置, 以加速器、離子 / 公釐與像素比率等計算的結果

scroll_h_physical_pixel float64

建議使用以實體像素為單位的水平捲動方向, 計算依據為加速器、離子 / 公釐與像素的比率等

is_precision_scroll bool

用於表示捲動事件來自精度捲動裝置 (HI_RES) 滑鼠或觸控板)。用戶端可能會想播放內插動畫 以便順利捲動畫面

TouchDeviceInfo

fuchsia.ui.pointer/touch.fidl 中定義

發出觸控事件串流的裝置相關資訊。

Ordinal欄位類型說明
id uint32

發出觸控事件串流的觸控裝置 ID。 裝置可以有多個指標,每個指標都有專屬的指標 ID 和 您自己的觸控事件串流 必填。

TouchEvent

fuchsia.ui.pointer/touch.fidl 中定義

能以自給自足且一致地收集指標相關資料 這個磁碟區

Ordinal欄位類型說明
timestamp zx/Time

觀察到這個事件的時間。 必填。

view_parameters ViewParameters

相關檢視和可視區域的參數 以便正確解讀您元素的位置、方向、規模 分派至檢視區塊的觸控事件間段距離。

  • 有連線且發生變更時核發。
device_info TouchDeviceInfo

指標裝置的說明,足以正確解讀 裝置的功能性和使用意圖

  • 每部裝置只能核發一次。
pointer_sample TouchPointerSample

觸控互動中每個取樣資料點的說明 事件。

  • 互動中的每個樣本都會發出這個檔案。
interaction_result TouchInteractionResult

觸控事件互動的手勢區分結果。

  • 每次互動只能發出一次。
trace_flow_id uint64

這個 ID 用來與此事件於下列期間的傳送/接收事件建立關聯: 也就是元件要素

TouchPointerSample

fuchsia.ui.pointer/touch.fidl 中定義

觸控事件串流中每個取樣資料點的說明。 所有欄位均為必填。

Ordinal欄位類型說明
interaction TouchInteractionId

此指標範例所屬的互動。

phase EventPhase

此事件在互動的狀態機器中的狀態。

position_in_viewport Point2

此事件在可視區域座標系統中的位置。

TouchResponse

fuchsia.ui.pointer/touch.fidl 中定義

各事件|事件 (從用戶端傳送至伺服器) 的意見回饋事件。

僅限 |TouchPointerSample|需要 |TouchResponseType|;其他事件 伺服器預期會顯示空白 |TouchResponse|表格。

Ordinal欄位類型說明
response_type TouchResponseType

用戶端在指定時間內回應的互動配置 |TouchPointerSample|。

trace_flow_id uint64

這個 ID 可在 也就是元件要素

觀測站

名稱類型說明
MOUSE_MAX_EVENT 128 uint32
TOUCH_MAX_EVENT 128 uint32

ALIASES

名稱說明
Mat3 array[9]

浮點 3x3 矩陣。

  • 這些值會按照資料欄主要順序排列。
Point2 array[2]

浮點 2D 點。

  • 值的排列順序為 (x, y)。
RelativeMotion array[2]

滑鼠裝置執行的相對動作。

RelativeMotionRange array[2]

滑鼠裝置的相對動作的有效值。

  • 範圍的排列方式為 (x, y)。