NVDA 内幕故事7:API 和覆盖类
本文为[《内幕故事》][1]系列英文译文的第七篇,也是关于 NVDA 对象的三部曲的最后一部分。
对于新读者:欢迎来到《NVDA 内幕故事》系列, 一位经验丰富的 NVDA 开发人员将带您揭秘 NVDA 屏幕阅读器的内部工作原理。 由于我们讨论的是软件内部原理,这些帖子很快就会变得非常复杂,所以请耐心阅读。
本文为[《内幕故事》][1]系列英文译文的第七篇,也是关于 NVDA 对象的三部曲的最后一部分。
对于新读者:欢迎来到《NVDA 内幕故事》系列, 一位经验丰富的 NVDA 开发人员将带您揭秘 NVDA 屏幕阅读器的内部工作原理。 由于我们讨论的是软件内部原理,这些帖子很快就会变得非常复杂,所以请耐心阅读。
本文是第六篇《内幕故事》的译文,也是 NVDA 对象的三部曲之一: NVDA 对象的解析,深入探索构成 NVDA 对象组成部分。
对于新读者:《NVDA 内幕故事》是一系列详细介绍 NVDA 操作和内部机制的帖子。 由于某些部分可能会变得相当技术性,我会尽力简化一些,但不会削减关键细节。 对于经验丰富的 NVDA 用户,我希望这些帖子能帮助他们理解 NVDA 的工作原理。
这是第五篇 NVDA 内幕故事,将会介绍 NVDA 的核心部分:NVDA 对象。
对于我们的新朋友、新读者们: 如果你是一个新的 NVDA 用户,或者刚开始使用屏幕阅读器, 我要介绍的部分可能令人难以理解,因为它会涉及屏幕阅读器的内部工作原理。 作为一个即将踏上人生新阶段的开发者,我觉得这是一个好机会, 我可以传授我对屏幕阅读器的了解,以帮助下一批用户和有意成为开发者的人。 我会尽我所能让这些信息易于理解。
旧的 Hexo 博客的截图
Congratulations, you have made your first post!
Feel free to play around and edit this post as much as you like.
下面的故事源于[此讨论贴][1]中提出的问题:NVDA 如何在睡眠状态下接收到传递给自己的键盘命令? 更深层次的问题是:按下 NVDA+Shift+S/Z 切换睡眠模式时,NVDA 是否处于“睡眠”状态?
本故事的部分内容包括实际的 NVDA 源代码。对于大多数人来说,这可能是你第一次真正看到用 Python 编写的屏幕阅读器源代码。我认为让大家看到一些源代码是很重要的,这样人们就可以更好地理解正在发生的事情。并让我能用实际的代码来解释一些概念和机制。
在我们真正开始讨论 NVDA 组件之前,有必要先思考一下屏幕阅读器是什么和不是什么,以及屏幕阅读器的可能性及限制背后的整体概念。我们还需要了解与屏幕阅读相关的可访问性。只有这样,其余的内幕帖子才有意义,因为故事的开始和结束都定义了屏幕阅读技术的现实、可能性和限制。 对于任何希望向 NVDA 项目提交代码贡献的人,你需要考虑 NVDA 及其用户面临的整体社会和文化现实。
译注:《内幕故事》系列文章为英文译文。后文中的“我”指 Joseph Lee
首先,感谢 Brian V 允许我做一些我过去几年梦寐以求的事情:带大家了解 NVDA 屏幕阅读器的内部结构。 在过去的几年里,我希望我能花一些时间告诉你屏幕阅读器的内部是如何工作的,并为屏幕阅读器的研究添加急需的知识体系。