用于 UI 工具包的可访问性基础设施
UI 工具包的可访问性基础设施 AccessKit 使得在渲染自己的用户界面元素的工具包中实现屏幕阅读器和其他辅助技术的可访问性变得更加容易。它提供了一个跨平台、跨语言的可访问性 API 抽象,因此工具包开发人员只需要实现一次可访问性。
AccessKit 的核心是一个数据模式,它定义了为屏幕阅读器和其他辅助技术呈现可访问的用户界面所需的所有数据。该模式表示一个树状结构,其中每个节点都是一个单一的 UI 元素或元素集群,例如窗口或文档。每个节点都具有整数 ID、角色(例如按钮、标签或文本输入)以及各种可选属性。该模式还定义了辅助技术可以请求的操作,例如移动键盘焦点、调用按钮或选择文本。该模式主要基于 Chromium 的跨平台可访问性抽象。
模式的标准定义位于 Rust 编程语言中。我们选择 Rust,因为它兼具效率和表达性强的类型系统。其他编程语言和模式定义语言(如 JSON Schema 或 Protocol Buffers)中的模式表示可以从 Rust 代码中生成。模式定义位于 accesskit crate。
当工具包使用 Rust 或其他能够高效调用 Rust 中实现的函数的语言(如 C 或 C++)编写时,可以在不产生序列化开销的情况下来回传递模式定义中的数据。在其他情况下,可以使用序列化来尽量减少语言互操作性的开销。由于模式支持 serde,每种语言绑定都可以选择自己的序列化格式。
提供程序(工具包或应用程序)与平台适配器之间的交互也受到 Chromium 的启发。由于 Chromium 采用多进程架构,
暂无开放 Issues,或尚未同步最近议题。