Fuchsia.ui.pointer

新增:7

通訊協定

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 相同。

新增:33

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 相同。

新增:33

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

新增:HEAD

欄位類型說明預設
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

新增:HEAD

欄位類型說明預設
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。這個通用參照可讓您對封閉式互動和開放式互動執行操作。

舉例來說,觸控事件通常會觀察到一連串的互動,例如手指與螢幕接觸和脫離。

名稱值說明
1

裝置已開始追蹤指標。

2

裝置已回報指標狀態更新。

3

裝置已停止追蹤指標。

4

指標已無法使用。

MouseViewStatus strict

類型:uint32

定義於 fuchsia.ui.pointer/mouse.fidl

滑鼠事件串流與這個檢視畫面的關係說明。

名稱值說明
1

串流會導向這個檢視畫面。

2

串流會從這個檢視畫面導向其他位置。

TouchInteractionStatus strict

類型:uint32

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

互動與這個用戶端之間的關係說明。

名稱值說明
1

用戶端無法取得互動項目的擁有權。

2

用戶端已取得互動的擁有權。

TouchResponseType strict

類型:uint32

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

用戶端可針對特定 |TouchPointerSample| 回應的可能互動處置。用於手勢消除歧義配置。

回覆內容是根據互動擁有權聲明的概念。用戶端可以對開放式互動聲明擁有權,但伺服器只會授予一個用戶端的聲明,其他用戶端的聲明則會遭到拒絕。

名稱值說明
1

用戶端對這項互動不感興趣,因此拒絕互動擁有權。用戶端會停止接收這項互動的事件。

2

用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明這項互動的擁有權。

3

用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。在擁有權解析期間,這類聲明的優先順序高於優先順序較低的「可能」聲明,但一律低於「是」聲明。

4

用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。此外,系統也會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。

5

用戶端對這項互動感興趣,但需要查看更多事件才能決定;用戶端尚未聲明互動擁有權。此外,系統也會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。在擁有權解析期間,系統會優先處理「可能」聲明,但一律會優先處理「是」聲明。

6

用戶端對這項互動感興趣,但需要查看後續互動才能決定;用戶端尚未聲明這項互動的擁有權。這可避免在互動結束時解析擁有權。

7

用戶端對這項互動感興趣,但需要查看後續互動才能決定;用戶端尚未聲明這項互動的擁有權。這可避免在互動結束時解析擁有權。此外,系統會隱藏優先順序較低、嘗試解決互動擁有權問題的著作權聲明。

8

用戶端希望獨佔這項互動中的其餘事件,因此聲明擁有這項互動 (但這項聲明可能會獲得核准或遭到拒絕)。在擁有權爭議解決期間,這類聲明會將優先順序讓給優先順序較低的「是」聲明。

9

用戶端希望獨佔這項互動中的其餘事件,因此聲明擁有這項互動 (但這項聲明可能會獲得核准或遭到拒絕)。在擁有權解析期間,系統會優先處理這類聲明,而非優先順序較低的「是」聲明。

TABLES

MouseDeviceInfo

定義於 fuchsia.ui.pointer/mouse.fidl

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

序數欄位類型說明
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

新增:HEAD

序數欄位類型說明
timestamp zx/Time

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

view_parameters ViewParameters

相關聯檢視畫面和可視區域的參數,足以正確解讀傳送至檢視畫面的指標事件位置、方向、大小和事件間距離。

  • 系統會在連線和變更時發出。
device_info MouseDeviceInfo

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

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

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

核發政策。調度模式有兩種:「懸停」和「鎖定」。預設為懸停模式,串流會以片段形式分派給滑鼠事件懸停的顯示用戶端。鎖定模式會將串流導向單一用戶端 (不論檢視邊界為何),直到解除鎖定為止。使用者按下主要滑鼠按鈕時,通常會切換鎖定模式,但這最終取決於產品專屬政策。

stream_info MouseEventStreamInfo

懸停模式下檢視畫面進入/離開的信號。

  • 當滑鼠游標進入或離開檢視畫面時,系統就會發出這個事件。
trace_flow_id uint64

用於關聯此事件在元件邊界或抽象層之間的傳送/接收事件的 ID。

wake_lease handle<eventpair>

可選用的喚醒租約,用於傳遞電源接力棒。

MousePointerSample

定義於 fuchsia.ui.pointer/mouse.fidl

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

MousePointerSample 可能會將多個狀態變更合併為一個事件。舉例來說,如果使用者同時捲動滑鼠滾輪並按下左鍵,用戶端可能會在 1 個事件中同時收到捲動和按鈕狀態變更,或在不同事件中收到按鈕變更和捲動變更。

序數欄位類型說明
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

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

序數欄位類型說明
id uint32

觸控裝置的 ID,用於發出觸控事件串流。裝置可能擁有多個指標,每個指標都有自己的指標 ID 和觸控事件串流。必填。

TouchEvent 資源

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

新增:HEAD

序數欄位類型說明
timestamp zx/Time

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

view_parameters ViewParameters

相關聯檢視畫面和可視區域的參數,足以正確解讀分派至檢視畫面的觸控事件位置、方向、大小和事件間距離。

  • 系統會在連線和變更時發出。
device_info TouchDeviceInfo

指標裝置的說明,足以正確解讀裝置的功能和用途。

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

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

  • 系統會針對互動中的每個樣本發出這項事件。
interaction_result TouchInteractionResult

觸控事件互動的手勢消除歧義結果。

  • 每次互動都會發出一次。
trace_flow_id uint64

用於關聯此事件在元件邊界或抽象層之間的傳送/接收事件的 ID。

wake_lease handle<eventpair>

可選用的喚醒租約,用於傳遞電源接力棒。

TouchPointerSample

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

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

序數欄位類型說明
interaction TouchInteractionId

這個指標樣本所屬的互動。

phase EventPhase

這個事件在互動狀態機中的狀態。

position_in_viewport Point2

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

TouchResponse

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

每個 |Event| 的意見回饋事件,從用戶端傳送至伺服器。

只有 |TouchPointerSample| 需要 |TouchResponseType|;對於其他事件,伺服器預期會收到空白的 |TouchResponse| 資料表。

序數欄位類型說明
response_type TouchResponseType

用戶端針對特定 |TouchPointerSample| 回應的互動處置。

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]

浮點二維點。

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

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

RelativeMotionRange array[2]
新增:32