我们上一篇关于 GTK4 中无障碍功能的帖子是 一段时间之前了,是时候更新一下了。
感谢 Red Hat 的 Lukáš Tyrychtr 现在正在致力于无障碍功能。
无障碍功能 – 如何工作?
从 GTK3 到 GTK4,无障碍功能方面最大的变化之一是我们有了一个新的应用程序 API,该 API 仿照了 Web 上的 ARIA 规范。
要记住的高层视图是
app → ARIA → AT-SPI → accessibility bus → AT
这里的 AT 代表无障碍技术。在实践中,这主要意味着 orca,这是一个著名的屏幕阅读器(尽管有一个新的竞争者,即 odilia 项目)。
新层提供了诸如
void gtk_accessible_update_state (GtkAccessible *self, GtkAccessibleState first_state, ...)
之类的 API,允许应用程序设置其小部件的可访问属性。
ARIA 层改进
自从我们在 GTK4 中引入它以来,应用程序 API 层只经历了适度的更改。自从 Lukáš 开始致力于此以来,大约在过去的 9 个月中,这种情况开始发生变化。
他开始做的一件事是添加公共接口,以便第三方小部件(例如 libadwaita)可以提供完整的无障碍功能支持。第一个这样的接口是 GtkAccessibleRange
(4.10 版本中的新功能),用于诸如 GtkScale
之类的范围小部件。我们正在考虑添加更多功能,特别是 文本接口。这将是使终端可访问所必需的。
在 4.12 版本中,我们做了一些工作,使我们的实现更接近 ARIA 规范。这涉及到更改一些小部件的角色:我们的默认角色现在是“通用”,而顶层窗口使用“应用程序”角色。我们还重新调整了可访问名称和描述(即您听到 orca 读取的内容)的计算方式,以匹配 规范。
另一个改进是,我们的大多数小部件现在都具有必要的标签和关系,以使 orca 可以读取它们。如果您发现仍然缺少某些内容,请告诉我们!
AT-SPI 转换改进
我们希望看到对 AT-SPI D-Bus API 进行一些现代化改造,这已不是什么秘密。但目前,我们必须使用它。我们的转换层通过仅将 AT 请求的对象延迟放置在总线上来工作,以避免产生过多的总线流量。
我们转换的最新改进之一是我们现在正在使用 GtkAccessibleRange
,因此第三方范围小部件可以访问。
我们还修复了 GtkNotebook
和 GtkStackSwitcher
的选择实现的问题,因此 AT 现在可以在笔记本和堆栈中更改选定的选项卡。
工具
所有这些听起来都不错,但是如果您是应用程序开发人员,您可能想知道如何查找和修复应用程序中的无障碍功能问题。
只需打开屏幕阅读器并查看它在您浏览应用程序时所说的内容是非常有益的。但是我们也有一些工具可以帮助您评估应用程序的无障碍功能支持。
GTK 检查器有一个页面显示无障碍功能信息
最近对其进行了改进,不仅显示了在每个小部件上设置的属性、状态和关系,还显示了 GTK 计算并传递给 AT 的名称和描述 - 即 orca 读取的文本。
检查器中的另一个工具是全新的:无障碍功能叠加层显示基于 ARIA 创作指南的警告和建议。
它看起来像这样
它并不完美,但它应该为您提供一些关于您可以在哪里改进无障碍功能的快速见解。
总结
GTK 4.12 将具有更好的开箱即用无障碍功能以及可帮助您使应用程序无障碍的新工具。
尽情享受吧!❤️