fuchsia.accessibility.semantics

已新增:7

專家

SemanticListener

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

語意供應器是一種用戶端介面,可供管理員用於啟用或停用語意更新,以及要求用戶端執行無障礙功能動作。

HitTest

要求語意提供者執行命中測試並傳回結果。

要求

名稱類型
local_point fuchsia.math/PointF

回應

名稱類型
result Hit

OnAccessibilityActionRequested

要求語意提供者在前端有節點 ID 的節點上執行無障礙功能動作。

要求

名稱類型
node_id uint32
action Action

回應

名稱類型
handled bool

OnSemanticsModeChanged

回呼會通知用戶端是否要將更新內容傳送至語意樹狀結構。呼叫 update_enabled = false 時,語意管理員會清除所有狀態。 如果使用 update_enabled = true 呼叫,用戶端應傳送目前語意樹狀結構的完整狀態。

要求

名稱類型
updates_enabled bool

回應

<EMPTY>

SemanticTree

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

更新特定檢視區塊語意樹狀結構的介面。您可以新增、更新或刪除節點。由於更新的大小可能會超過 FIDL 傳輸限制,用戶端負責將變更拆成多項更新,並刪除符合這些限制的呼叫。完整更新推送結束時,必須呼叫修訂函式,以告知更新已結束。

用戶端可能會在呼叫 CommitUpdates() 之前,對 UpdateSemanticNodes(...) 或 DeleteSemanticNodes(...) 進行多次呼叫,並且必須等待語意管理員回覆 CommitUpdates() 方法,以瞭解更新是否已處理完畢。這可讓用戶端將一組變更 (例如重新計算的語意樹狀圖) 拆分為語意樹狀結構至與 FIDL 相容的區塊,但一次修訂所有變更。

如果語意管理員從用戶端收到不一致的狀態 (例如樹狀結構無效或無法辨識的父項節點 ID),伺服器就會關閉管道。用戶端負責重新連線,並從頭重新傳送狀態。

CommitUpdates

使用 UpdateSemanticNodes 和 DeleteSemanticNodes,對與檢視表相關聯的節點樹狀結構提交待處理的變更。系統會按照接收順序處理更新。如果提交的更新導致樹狀結構中的樹狀結構 (例如缺少根節點或週期等),語意管理員會關閉管道。

要求

<EMPTY>

回應

<EMPTY>

DeleteSemanticNodes

告知根目錄從下一個修訂版本的語意樹狀結構中移除含有 node_id 的節點。

要求

名稱類型
node_ids vector<uint32>[2048]

SendSemanticEvent

傳送與這個樹狀結構相關的語意事件。這會立即套用,且不會等待 CommitUpdates()。呼叫端會負責在已修訂的節點上觸發事件。系統會叫用傳回回呼,確認已收到事件。

要求

名稱類型
semantic_event SemanticEvent

回應

<EMPTY>

UpdateSemanticNodes

將全新/更新節點傳送至根層級,以新增至下一個修訂版本的快取。

要求

名稱類型
nodes vector<Node>[2048]

SemanticsManager

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

用於管理檢視畫面連線的介面,用於收集有關目前 UI 狀態的語意資訊。

此管理程式可讓用戶端註冊為檢視畫面的語意供應器。回傳語意管理員提供的介面,可更新、修訂和刪除該檢視畫面的語意樹狀結構中的資訊。如果語意管理員發生錯誤,系統會關閉管道、刪除任何相關聯的資料,並透過用戶端重新註冊。

RegisterViewForSemantics

要求

名稱類型
view_ref fuchsia.ui.views/ViewRef
listener SemanticListener
semantic_tree_request server_end<SemanticTree>

表情符號

動作嚴格

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

代表可套用至節點的動作。

名稱說明
1

與元素相關聯的預設動作。

2

與元素相關聯的次要動作。這可能對應長按 (觸控螢幕) 或按一下滑鼠右鍵 (滑鼠)。

3

將焦點移至這個元素 (輸入/無無障礙功能)。

4

設定元素的值。

5

捲動節點即可顯示。

6

將滑桿減少一個步驟值。步驟大小是由執行此動作的語意節點擁有者定義。舉例來說,音量滑桿可能想製作步驟 1、2、3,而時間滑桿可能讓每個步驟改變都略過 30 秒。

7

將滑桿往一個步驟值遞增。步驟大小是由執行此動作的語意節點擁有者定義。舉例來說,音量滑桿可能想製作步驟 1、2、3,而時間滑桿可能讓每個步驟改變都略過 30 秒。

CheckedState 嚴格

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

代表 UI 核取方塊的狀態。

名稱說明
1

未輸入資料或元素不是核取方塊時使用。

2

已勾選

3

已取消勾選

4

未確定狀態

EnabledState strict

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

代表元素的啟用/停用狀態。

新增時間:15

名稱說明
1

已啟用元素。

2

元素已停用。

3

未確定狀態。

LabelOrigin strict 標籤來源

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

標籤的可能來源。

名稱說明
1

節點尚無標籤。

2

這個元素在執行階段 UI 中的屬性會明確設定標籤。例如包含 aria 標籤的元素。

3

執行階段 UI 中的這項元素屬性會明確將標籤設為空白。

4

這個標籤是表格類元素的說明文字。由於部分輔助技術具有處理資料表的特殊模式,執行階段應針對這類來源標記其標籤,讓使用者瞭解在資料表模式中瀏覽資料表的內容。例如,<caption> HTML 標記會設定標籤。

5

這個節點會從應用程式顯示的內容收到其標籤。舉例來說,網頁中的文字會成為這個節點的標籤。

6

一個元素可接收使用者輸入的值,並提供建議輸入內容。例如 HTML 輸入欄位中的預留位置屬性。

7

其他元素提供此元素的標籤。例如透過 aria 標籤來新增。

8

這個元素的標籤會以視覺化工具提示表示。例如來自 <title> HTML 標記。

9

標籤取自使用者輸入的值。

角色嚴格

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

代表 UI 中元素的角色。

名稱說明
1

這個角色代表了角色目前不支援的元素。

2

畫面中可點選/啟用的內容,且只有單一函式。

3

標題文字,例如 HTML 中標記為 <h1> 的內容。

4

圖片或圖形。

5

可接收文字輸入內容的欄位。

6

滑桿,例如影片的音量滑桿或時間滑桿。

8

可切換的核取方塊。

9

用來從一組選項中選取選項的圓形按鈕。

10

用於代表清單的角色。

11

這個角色用於代表清單中的元素,包括標記及其內容。例如,標記 <li> 的元素,或具備 ARIA 清單項目角色的元素。

12

用於代表清單標記的角色 (例如項目符號、數字、羅馬數字等)。

13

這個角色代表不可變更的文字。

14

用於代表切換鈕的角色。

15

這個角色用來代表元素表格。

16

用於代表格線的角色。例如具有 aria-grid 角色的元素。

17

用來代表資料表資料列的角色。

18

這個角色用來代表表格或格線中的儲存格。

19

用於代表欄標題的角色。例如含有 HTML 標記 <th> 的元素。

20

用於代表 aria-rowgroup 類似元素的角色。

21

這個角色用於代表一段文字。

22
23
24

ToggledState strict

類型:uint32

定義於 fuchsia.accessibility.semantics/node.fidl

代表 UI 切換鈕的狀態。

名稱說明
1

切換按鈕已設為開啟。

2

切換按鈕目前為關閉狀態。

3

切換鈕處於「不確定」狀態。

資料表

AnnounceEvent

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

公告事件是指將訊息傳送至 Semantic Tree,以告知應用程式某些全域狀態的變更。由於這則公告可能會幹擾輔助技術,因此應單獨使用。

序數欄位類型說明
message string[16384]

說明應用程式變更的訊息。這則訊息應以應用程式所用的語言進行本地化。

屬性

定義於 fuchsia.accessibility.semantics/node.fidl

屬性是描述元素的重要屬性。與狀態不同,屬性在元素的生命週期中不會變更。例如:含有標籤屬性「ok」的按鈕不應變更為「cancel」,因為按鈕並非相同元素。

序數欄位類型說明
label string[16384]

元素的主要標籤。如果超過 MAX_LABEL_SIZE,則用戶端會負責截斷標籤。

secondary_label string[16384]

元素的次要標籤。如果超過 MAX_LABEL_SIZE,則用戶端會負責截斷標籤。

secondary_action_description string[16384]

節點中次要動作 (即長按或按一下滑鼠右鍵) 應執行的動作說明。

range RangeAttributes

如果元素是滑桿 / 範圍控制項,就會填入範圍屬性。

set SetAttributes

如果元素屬於某些類型的集合,系統會填入設定屬性。舉例來說,相關的圓形按鈕是同一組按鈕的一部分。

list_attributes SetAttributes

如果節點有「LIST」角色,則應填寫清單屬性。請注意,只需填入 sizeset_element_ids

list_element_attributes SetAttributes

如果節點具有 LIST_ELEMENT 角色,且從具備「LIST」角色的節點繼承,則應填寫清單元素屬性。請注意,只應填入 index

hierarchical_level uint32

元素的階層層級。舉例來說,HTML 內的標頭可以是第 1 級到第 6 級,也可以是 Markdown。

table_attributes TableAttributes

元素是表格時,系統會填入表格屬性。

label_origin LabelOrigin

此元素的標籤來源。

is_keyboard_key bool

元素是否屬於虛擬鍵盤。例如螢幕小鍵盤上的按鍵。

table_row_attributes TableRowAttributes

元素是表格列時,表格列的屬性就會填入資料。

table_cell_attributes TableCellAttributes

表格儲存格屬性會在元素為表格儲存格時填入。

Hit

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

在檢視畫面的語意樹狀結構上(例如 Flutter/Chrome) 實作的命中測試結果,並傳送至無障礙功能。

序數欄位類型說明
node_id uint32

代表特定 UI 中節點的專屬 ID。系統會假設 0 為根節點,也是樹狀結構的唯一進入點。如果未命中,node_id 就不會填入。

path_from_root vector<uint32>[256]

按照順序排列的節點 ID 清單,代表從根節點到命中節點的路徑。

節點

定義於 fuchsia.accessibility.semantics/node.fidl

節點代表介面中的語意元素。這可以是按鈕、文字欄位、核取方塊,或是具有相關語意意義的任何元素,以便輔助技術瞭解目前的 UI。

序數欄位類型說明
node_id uint32

代表特定 UI 中節點的專屬 ID。系統會假設零為根節點和樹狀結構的唯一進入點。不允許使用森林。

role Role

這個元素的角色,例如按鈕、核取方塊等。

states States

這個物件的狀態表格,例如已勾選、可編輯等。

attributes Attributes

這個節點的屬性表格。

actions vector<Action>[100]

可對這個節點執行的動作清單。

child_ids vector<uint32>[20000]

這個節點的子項 ID 清單,按週遊順序列出。提供語意樹狀結構資訊的執行階段,會負責確保樹狀結構不包含週期。每個節點只能有一個父項。

location fuchsia.ui.gfx/BoundingBox

此元素的本機定界框。

transform fuchsia.ui.gfx/mat4

將這個節點的座標空間轉換為其容器空間。4x4 的大小 以便與視覺網頁相容這個矩陣必須包含下列格式

[ Sx 0 0 Tx ] [ 0 Sy 0 Ty ] [ 0 0 Sz Tz ] [ 0 0 0 1 ]

其中 Sx、Sy 和 Sz 是縮放係數,而 Tx、Ty、Tz 則是 x、y 和 z 元件的轉譯因數。

container_id uint32

這個節點上祖系的節點 ID,用來做為 |transform| 的目標。如果沒有,系統會將此解讀為這個節點的父項。

node_to_container_transform fuchsia.ui.gfx/mat4

注意:我們已淘汰 transform,並改用 node_to_container_transform。用戶端「不得」設定這兩個欄位。

將這個節點的座標空間轉換為其容器空間。如果已設定 container_id 欄位,則該 ID 會指定容器節點。否則,這個節點的父項就是容器節點。

此外,如果已設定 container_id,Fuchsia 無障礙工具會在轉換為容器座標空間時套用 node_to_container_transform,然後依容器的 location.min 將這個節點的座標空間轉譯後轉譯。如未設定 container_id,系統不會套用這項譯後翻譯。

4x4 解析度,與視覺網頁相容。這個矩陣必須格式如下:

[ Sx 0 0 Tx ] [ 0 Sy 0 Ty ] [ 0 0 Sz Tz ] [ 0 0 0 1 ]

其中 Sx、Sy 和 Sz 是縮放係數,而 Tx、Ty、Tz 則是 x、y 和 z 元件的轉譯因數。

RangeAttributes

定義於 fuchsia.accessibility.semantics/node.fidl

滑桿 / 範圍控制項屬性。

序數欄位類型說明
min_value float32

範圍控制項元素可使用的最小值。

max_value float32

範圍控制項元素可使用的最大值。

step_delta float32

叫用 DECREMENT 或 INCREMENT 動作時,元素的步驟差異值。

SetAttributes

定義於 fuchsia.accessibility.semantics/node.fidl

設定屬性,控制元素與同一組合中其他元素的連線方式。舉例來說,HTML 中包含相同名稱屬性的一組圓形按鈕屬於同一個組合。

序數欄位類型說明
size uint32

資料集的大小。

index uint32

資料集中的元素索引,從一個索引開始。

set_element_ids vector<uint32>[100]

此組合中其他元素的節點 ID。

狀態

定義於 fuchsia.accessibility.semantics/node.fidl

狀態是元素的動態屬性,可能會因使用者動作或自動化程序而變更。因此,它們與重要時間點的屬性 (也就是變化頻率) 不同。

序數欄位類型說明
checked bool

不再使用

checked_state CheckedState

核取方塊狀態。這個欄位與 ToggledState 互斥。

selected bool

表示目前已選取該元素。

hidden bool

元素目前是隱藏,或由架構標示為隱藏。

value string[16384]

使用者輸入的元素值 (如適用)。如果超過 MAX_VALUE_SIZE,則用戶端會負責截斷。

range_value float32

如果元素是滑桿或範圍控制項,則此欄位會包含目前值。請注意,這與上述的值欄位不同,因為這個值是由用戶端產生,並由使用者調整。

viewport_offset fuchsia.ui.gfx/vec2

如果元素是可捲動的可視區域,這個欄位會包含這個節點座標空間中要套用至子項的 x 和 y 偏移值。您可以利用這個偏移設定,安排子項在可視區域中的位置,反映元素目前的捲動情形。這些值沒有限制,沒有限制。

toggled_state ToggledState

切換鈕的狀態。只有在元素是切換切換元素且與 CheckedState 互斥時,才需要設定這個欄位。

focusable bool

指出此元素是否可在 UI 中聚焦。請注意,這並非 11y 的焦點,而是輸入焦點。

has_input_focus bool

這個元素是否具有輸入焦點。這與系統焦點相對應。只能設定一個元素的值。如果多個節點將這個值設為「true」,系統將無法判定行為。

enabled_state EnabledState

具有啟用/停用狀態的元素狀態。

新增時間:15

TableAttributes

定義於 fuchsia.accessibility.semantics/node.fidl

控製表格儲存格節點解讀方式的屬性。

序數欄位類型說明
column_span uint32

這個表格儲存格橫跨的欄數。

已淘汰 - 改為在儲存格節點使用 TableCellAttributes

row_span uint32

這個表格儲存格橫跨的列數。

已淘汰 - 改為在儲存格節點使用 TableCellAttributes

number_of_rows uint32

此資料表中的資料列數。

number_of_columns uint32

此資料表中的欄數。

column_header_ids vector<uint32>[100]

表格欄標題的節點 ID。

row_header_ids vector<uint32>[100]

表格列標題的節點 ID。

TableCellAttributes

定義於 fuchsia.accessibility.semantics/node.fidl

控製表格儲存格解讀方式的屬性。

序數欄位類型說明
row_index uint32

這個儲存格的列-索引。

column_index uint32

這個儲存格的欄索引。

row_span uint32

這個表格儲存格橫跨的列數。

column_span uint32

這個表格儲存格橫跨的欄數。

TableRowAttributes

定義於 fuchsia.accessibility.semantics/node.fidl

控製表格列節點解讀方式的屬性。

序數欄位類型說明
row_index uint32

表格列索引。

聯合國

語意事件 (嚴格)

定義於 fuchsia.accessibility.semantics/semantics_manager.fidl

代表在語意樹上觸發的語意事件。

序數Variant類型說明
announce AnnounceEvent

場景

名稱類型說明
MAX_FAN_OUT 20000 uint64

語意樹狀結構中節點的子項數量上限。

MAX_LABEL_SIZE 16384 uint64

標籤字串的大小上限 (以位元組為單位)。

MAX_MESSAGE_SIZE 16384 uint64

訊息字串的大小上限 (以位元組為單位)。

MAX_NODES_PER_UPDATE 2048 uint64

單次更新可以傳送的語意節點數量上限。

MAX_SET_ELEMENTS 100 uint32

語意集中的元素數量上限。

MAX_TREE_DEPTH 256 uint64

語意樹狀結構的深度上限。

MAX_VALUE_SIZE 16384 uint64

值字串的大小上限 (以位元組為單位)。