协议
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 |
与元素相关的次要操作。这可能对应于长按(触摸屏)或右键点击(鼠标)。 |
SET_FOCUS |
3 |
将(输入/非无障碍)焦点设置到此元素上。 |
SET_VALUE |
4 |
设置元素的值。 |
SHOW_ON_SCREEN |
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 中定义
表示元素的启用/停用状态。
名称 | 值 | 说明 |
---|---|---|
已启用 |
1 |
已启用元素。 |
已停用 |
2 |
元素已停用。 |
确定 |
3 |
不确定状态。 |
LabelOrigin 严格
类型:uint32
在 fuchsia.accessibility.semantics/node.fidl 中定义
标签的可能来源。
名称 | 值 | 说明 |
---|---|---|
统一 |
1 |
节点还没有标签。 |
属性 |
2 |
运行时界面中此元素的属性会明确设置其标签。例如,具有 aria-label 的元素。 |
ATTRIBUTE_EMPTY |
3 |
运行时界面中此元素的属性明确将其标签设置为空。 |
图片说明 |
4 |
此标签用作类似表格的元素的标题。由于某些辅助技术具有处理表的特殊模式,因此运行时应使用此类源来标记其标签,以便用户在以表模式进行导航时了解表的内容。例如,<caption> HTML 标记会设置标签。 |
目录 |
5 |
此节点会根据应用中存在的内容接收标签。例如,网页中的文本将成为此节点的标签。 |
PLACEHOLDER |
6 |
一种可以接收用户输入的值并具有建议的输入的元素。例如,HTML 输入字段上的占位符属性。 |
RELATED_ELEMENT |
7 |
另一个元素为此元素提供了标签。例如,通过 aria-labeledby。 |
TITLE |
8 |
此元素的标签由可视化提示表示。例如,就像来自 <title> HTML 标记一样。 |
值 |
9 |
该标签来自用户输入的值。 |
角色严格
类型:uint32
在 fuchsia.accessibility.semantics/node.fidl 中定义
表示元素在界面中的角色。
名称 | 值 | 说明 |
---|---|---|
未知 |
1 |
这个角色用于表示当前不支持哪个角色的元素。 |
按钮 |
2 |
屏幕上具有单一功能的可点击/激活元素。 |
标题 |
3 |
标题文字,例如 HTML 中标记为 <h1> 的内容。 |
IMAGE |
4 |
图片或图形。 |
TEXT_FIELD |
5 |
可以接收文本输入的字段。 |
幻灯片 |
6 |
滑块,例如视频的音量滑块或时间滑块。 |
链接 |
7 |
链接,例如网页上的链接。 |
CHECK_BOX |
8 |
可以切换的复选框。 |
RADIO_BUTTON |
9 |
从一组选项中选择一个选项的单选按钮。 |
列表 |
10 |
用于表示列表的角色。 |
LIST_ELEMENT |
11 |
角色,用于表示列表中的元素,包括其标记及其内容。例如,标记为 <li> 的元素或具有 ARIA listitem 角色的元素。 |
LIST_ELEMENT_MARKER |
12 |
用于表示列表标记的角色(例如项目符号、编号、罗马数字等)。 |
STATIC_TEXT |
13 |
用于表示不可变文本的角色。 |
TOGGLE_SWITCH |
14 |
用于表示切换开关的角色。 |
表格 |
15 |
用于表示元素表的角色。 |
网格 |
16 |
用于表示网格的角色。例如,具有 aria-grid 角色的元素。 |
TABLE_ROW |
17 |
用于表示表的行的角色。 |
单元格 |
18 |
用于表示表格或网格中单元格的角色。 |
COLUMN_HEADER |
19 |
用于表示列标题的角色。例如,一个带有 HTML 标记 <th> 的元素。 |
ROW_GROUP |
20 |
角色,用于表示类似 aria-rowgroup 的元素。 |
段落 |
21 |
用于表示一段文本的角色。 |
SEARCH_BOX |
22 |
|
TEXT_FIELD_WITH_COMBO_BOX |
23 |
|
ROW_HEADER |
24 |
ToggledState 严格
类型:uint32
在 fuchsia.accessibility.semantics/node.fidl 中定义
表示界面切换开关的状态。
名称 | 值 | 说明 |
---|---|---|
ON |
1 |
切换开关开启。 |
OFF |
2 |
切换开关已关闭。 |
确定 |
3 |
切换开关处于“不确定”状态。 |
表格
AnnounceEvent
在 fuchsia.accessibility.semantics/semantics_manager.fidl 中定义
通告事件是指将消息发送到语义树,通知应用中的某种全局状态更改的一种通告事件。由于此公告可能会对辅助技术造成干扰,因此应谨慎使用。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
message |
string[16384]
|
描述应用更改的消息。此消息应本地化为应用所用的语言。 |
属性
在 fuchsia.accessibility.semantics/node.fidl 中定义
属性是描述元素的必要属性。与状态不同,属性不会在元素的生命周期内发生变化。示例:带有“ok”标签属性的按钮绝不应更改为“cancel”,因为这两个元素是不同的元素。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
label |
string[16384]
|
元素的主标签。如果标签长度超过 MAX_LABEL_SIZE,则客户端负责截断标签。 |
2 |
secondary_label |
string[16384]
|
元素的次级标签。如果标签长度超过 MAX_LABEL_SIZE,则客户端负责截断标签。 |
3 |
secondary_action_description |
string[16384]
|
描述节点上的次要操作(相当于长按或右键点击)应该执行什么操作。 |
4 |
range |
RangeAttributes
|
如果元素是滑块 / 范围控件,则系统会填充范围属性。 |
5 |
set |
SetAttributes
|
如果元素属于某种类型的集合,则填充属性集。例如,相互关联的单选按钮属于同一组。 |
6 |
list_attributes |
SetAttributes
|
如果节点具有 LIST 角色,则应填充列表属性。请注意,应仅填充 |
7 |
list_element_attributes |
SetAttributes
|
如果节点具有 LIST_ELEMENT 角色,并且源自具有 LIST 角色的节点,则应填充列表元素属性。请注意,只能填充 |
8 |
hierarchical_level |
uint32
|
元素的层级。例如,在 HTML 或 Markdown 中,标头可以是级别 1 到 6。 |
9 |
table_attributes |
TableAttributes
|
当相应元素是表格时,系统会填充表格属性。 |
10 |
label_origin |
LabelOrigin
|
此元素的标签来源。 |
11 |
is_keyboard_key |
bool
|
相应元素是否属于虚拟键盘。例如,屏幕键盘上的按键。 |
12 |
table_row_attributes |
TableRowAttributes
|
当相应元素是表格行时,系统会填充表格行属性。 |
13 |
table_cell_attributes |
TableCellAttributes
|
当相应元素是表格单元格时,系统会填充表格单元格的属性。 |
Hit
在 fuchsia.accessibility.semantics/semantics_manager.fidl 中定义
对视图语义树进行点击测试的结果,该语义树由运行时(如 Flutter/Chrome)实现并发送到无障碍功能。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
node_id |
uint32
|
代表特定界面中节点的唯一 ID。零被假定为根节点和树的唯一入口点。没有命中时,node_id 不会填充。 |
2 |
path_from_root |
vector<uint32>[256]
|
节点 ID 的有序列表,表示从根节点到命中节点的路径。 |
节点
在 fuchsia.accessibility.semantics/node.fidl 中定义
Node 表示接口上的语义元素。这可能是按钮、文本字段、复选框或任何具有相关语义含义的元素,以便辅助技术可以理解当前界面。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
node_id |
uint32
|
代表特定界面中节点的唯一 ID。零被假定为根节点和该树的唯一入口点。不允许使用森林。 |
2 |
role |
Role
|
此元素的角色,例如按钮、复选框等。 |
3 |
states |
States
|
此对象的状态表格,例如“已选中”“可修改”等。 |
4 |
attributes |
Attributes
|
此节点的属性表。 |
5 |
actions |
vector<Action>[100]
|
可在此节点上执行的操作的列表。 |
6 |
child_ids |
vector<uint32>[20000]
|
此节点的子 ID 列表(按遍历顺序)。提供语义树信息的运行时负责确保树中不包含循环。每个节点只能有一个父节点。 |
7 |
location |
fuchsia.ui.gfx/BoundingBox
|
此元素的本地边界框。 |
8 |
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 分量的转换因子。 |
9 |
container_id |
uint32
|
此节点的祖先节点 ID,用作 |transform| 的目标。如果不存在,则会被解读为该节点的父节点。 |
10 |
node_to_container_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 分量的转换因子。 |
RangeAttributes
在 fuchsia.accessibility.semantics/node.fidl 中定义
滑块 / 范围控件属性。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
min_value |
float32
|
范围控制元素可采用的最小值。 |
2 |
max_value |
float32
|
范围控制元素可采用的最大值。 |
3 |
step_delta |
float32
|
调用 DECREMENT 或 INCREMENT 操作时,元素应用的步进增量。 |
SetAttributes
在 fuchsia.accessibility.semantics/node.fidl 中定义
设置一些属性,以控制某个元素如何连接到同一集中的其他元素。例如,在 HTML 中包含相同 name 属性的一组单选按钮应属于同一组。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
size |
uint32
|
数据集的大小。 |
2 |
index |
uint32
|
集中的元素索引,从 1 开始。 |
3 |
set_element_ids |
vector<uint32>[100]
|
此集中其他元素的节点 ID。 |
状态
在 fuchsia.accessibility.semantics/node.fidl 中定义
状态是元素的动态属性,可能会随着用户操作或自动化流程而发生变化。因此,它们与属性具有一个重要的区别,即更改频率。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
checked |
bool
|
不推荐 |
2 |
checked_state |
CheckedState
|
复选框的状态。 此字段与 ToggledState 互斥。 |
3 |
selected |
bool
|
当前是否选择了相应元素。 |
5 |
value |
string[16384]
|
用户输入的元素值(如果适用)。如果长度超过 MAX_VALUE_SIZE,则由客户端负责截断。 |
6 |
range_value |
float32
|
如果元素是滑块或范围控件,此字段包含当前值。请注意,它与上面的值字段不同,因为此字段由客户端生成,只由用户进行调整。 |
7 |
viewport_offset |
fuchsia.ui.gfx/vec2
|
如果该元素是可滚动的视口,则此字段包含要应用于子级的此节点坐标空间内的 x 和 y 偏移量。此偏移量用于在视口内定位子项,以反映元素的当前滚动。这些值没有任何限制,除了它们必须是有限的之外。 |
8 |
toggled_state |
ToggledState
|
切换开关的状态。 仅当相应元素是切换开关元素且与 CheckedState 互斥时,才必须设置此字段。 |
9 |
focusable |
bool
|
此元素在界面中是否可聚焦。请注意,这不是 a11y 焦点,而是输入焦点。 |
10 |
has_input_focus |
bool
|
此元素是否具有输入焦点。这与系统焦点相对应。只能为一个元素设置此值。如果多个节点将此值设为“true”,则无法确定行为。 |
11 |
enabled_state |
EnabledState
|
具有启用/停用状态的元素的状态。 添加数量:15
|
TableAttributes
在 fuchsia.accessibility.semantics/node.fidl 中定义
用于控制表单元格节点的解释方式的属性。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
column_span |
uint32
|
此表格单元格跨越的列数。 已弃用 - 请改用 TableCellAttributes 作为单元节点 |
2 |
row_span |
uint32
|
此表格单元格跨越的行数。 已弃用 - 请改用 TableCellAttributes 作为单元节点 |
3 |
number_of_rows |
uint32
|
此表中的行数。 |
4 |
number_of_columns |
uint32
|
此表中的列数。 |
5 |
column_header_ids |
vector<uint32>[100]
|
表列标题的节点 ID。 |
6 |
row_header_ids |
vector<uint32>[100]
|
表行标题的节点 ID。 |
TableCellAttributes
在 fuchsia.accessibility.semantics/node.fidl 中定义
用于控制表格单元格的解释方式的属性。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
row_index |
uint32
|
此单元格的行索引。 |
2 |
column_index |
uint32
|
此单元格的列索引。 |
3 |
row_span |
uint32
|
此表格单元格跨越的行数。 |
4 |
column_span |
uint32
|
此表格单元格跨越的列数。 |
TableRowAttributes
在 fuchsia.accessibility.semantics/node.fidl 中定义
用于控制表行节点的解释方式的属性。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
row_index |
uint32
|
表格行索引。 |
联合
SemanticEvent 严格
在 fuchsia.accessibility.semantics/semantics_manager.fidl 中定义
表示在语义树上触发的语义事件。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
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 |
值字符串的大小上限(以字节为单位)。 |