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

告知客户端是否将更新发送到语义树的回调。当使用 updates_enabled = false 时调用语义管理器时,语义管理器将清除所有状态。使用 updates_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_ids 的节点。

请求

名称类型
node_ids vector<uint32>[2048]

SendSemanticEvent

发送与此树相关的语义事件。这会立即应用,不会等待 CommitUpdates()。调用方负责在已提交的节点上触发事件。 系统会调用返回回调函数,以确认已收到相应事件。

请求

名称类型
semantic_event SemanticEvent

响应

<EMPTY>

UpdateSemanticNodes

将新节点/更新后的节点发送到根节点,以在下次提交时添加到缓存中。

请求

名称类型
nodes vector<Node>[2048]

SemanticsManager

fuchsia.accessibility.semantics/semantics_manager.fidl 中定义

用于管理与视图的连接,以便收集有关其当前界面状态的语义信息的接口。

该管理器允许客户端注册为其视图的语义提供程序。这样,语义管理器就会提供一个接口,用于从该视图的语义树中更新、提交和删除信息。如果语义管理器遇到错误,它会关闭通道、删除所有关联的数据并依赖客户端重新注册。

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 秒时跳过 30 秒。

7

将滑块递增一个步长值。步长由执行此操作的语义节点的所有者定义。例如,音量滑块可能需要执行第 1 步、第 2 步、第 3 步,而时间滑块可能需要在每步变化执行 30 秒时跳过 30 秒。

CheckedState 严格

类型:uint32

fuchsia.accessibility.semantics/node.fidl 中定义

表示界面复选框的状态。

名称说明
1

在未输入任何数据或元素不是复选框时使用。

2

已选中

3

未选中

4

不确定状态

EnabledState 严格

类型:uint32

fuchsia.accessibility.semantics/node.fidl 中定义

表示元素的启用/停用状态。

添加数量:15

名称说明
1

已启用元素。

2

元素已停用。

3

不确定状态。

LabelOrigin 严格

类型:uint32

fuchsia.accessibility.semantics/node.fidl 中定义

标签的可能来源。

名称说明
1

节点还没有标签。

2

运行时界面中此元素的属性会明确设置其标签。例如,具有 aria-label 的元素。

3

运行时界面中此元素的属性明确将其标签设置为空。

4

此标签用作类似表格的元素的标题。由于某些辅助技术具有处理表的特殊模式,因此运行时应使用此类源来标记其标签,以便用户在以表模式进行导航时了解表的内容。例如,<caption> HTML 标记会设置标签。

5

此节点会根据应用中存在的内容接收标签。例如,网页中的文本将成为此节点的标签。

6

一种可以接收用户输入的值并具有建议的输入的元素。例如,HTML 输入字段上的占位符属性。

7

另一个元素为此元素提供了标签。例如,通过 aria-labeledby。

8

此元素的标签由可视化提示表示。例如,就像来自 <title> HTML 标记一样。

9

该标签来自用户输入的值。

角色严格

类型:uint32

fuchsia.accessibility.semantics/node.fidl 中定义

表示元素在界面中的角色。

名称说明
1

这个角色用于表示当前不支持哪个角色的元素。

2

屏幕上具有单一功能的可点击/激活元素。

3

标题文字,例如 HTML 中标记为 <h1> 的内容。

4

图片或图形。

5

可以接收文本输入的字段。

6

滑块,例如视频的音量滑块或时间滑块。

8

可以切换的复选框。

9

从一组选项中选择一个选项的单选按钮。

10

用于表示列表的角色。

11

角色,用于表示列表中的元素,包括其标记及其内容。例如,标记为 <li> 的元素或具有 ARIA listitem 角色的元素。

12

用于表示列表标记的角色(例如项目符号、编号、罗马数字等)。

13

用于表示不可变文本的角色。

14

用于表示切换开关的角色。

15

用于表示元素表的角色。

16

用于表示网格的角色。例如,具有 aria-grid 角色的元素。

17

用于表示表的行的角色。

18

用于表示表格或网格中单元格的角色。

19

用于表示列标题的角色。例如,一个带有 HTML 标记 <th> 的元素。

20

角色,用于表示类似 aria-rowgroup 的元素。

21

用于表示一段文本的角色。

22
23
24

ToggledState 严格

类型:uint32

fuchsia.accessibility.semantics/node.fidl 中定义

表示界面切换开关的状态。

名称说明
1

切换开关开启。

2

切换开关已关闭。

3

切换开关处于“不确定”状态。

表格

AnnounceEvent

fuchsia.accessibility.semantics/semantics_manager.fidl 中定义

通告事件是指将消息发送到语义树,通知应用中的某种全局状态更改的一种通告事件。由于此公告可能会对辅助技术造成干扰,因此应谨慎使用。

序数字段类型说明
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 或 Markdown 中,标头可以是级别 1 到 6。

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

代表特定界面中节点的唯一 ID。零被假定为根节点和树的唯一入口点。没有命中时,node_id 不会填充。

path_from_root vector<uint32>[256]

节点 ID 的有序列表,表示从根节点到命中节点的路径。

节点

fuchsia.accessibility.semantics/node.fidl 中定义

Node 表示接口上的语义元素。这可能是按钮、文本字段、复选框或任何具有相关语义含义的元素,以便辅助技术可以理解当前界面。

序数字段类型说明
node_id uint32

代表特定界面中节点的唯一 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,则在转换为容器的坐标空间时,应用 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 中包含相同 name 属性的一组单选按钮应属于同一组。

序数字段类型说明
size uint32

数据集的大小。

index uint32

集中的元素索引,从 1 开始。

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

此元素在界面中是否可聚焦。请注意,这不是 a11y 焦点,而是输入焦点。

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

表格行索引。

联合

SemanticEvent 严格

fuchsia.accessibility.semantics/semantics_manager.fidl 中定义

表示在语义树上触发的语义事件。

序数变体类型说明
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

值字符串的大小上限(以字节为单位)。