你是如何认识 NVDA 对象导航的

关于 NVDA 的对象导航,其实,从名字上来看,它没有那么友好。
什么是“对象”?难道,是你的 Ta 或 Ta?
导航又是什么,是“前方三百米右转到达清华池”吗?
“焦点”又是什么,是“确认过眼神儿,就是欠你钱的那个人”吗?

听听他们怎么说

  以下是 NVDA 中文交流群里的精华消息,笔者认为,这些形象的类比可能会帮你更好的理解 NVDA 的对象导航。

好奇的 01 说:

  对象就是可以操作的一切东西的意思。窗口、按钮、列表、列表项、甚至于整个桌面都是对象。对象之间是有关系的。就好比大箱子套小箱子,小箱子里面装了一些东西,大箱子里面也装了一些东西。总之就是互相嵌套的一个结构。比较好理解的就是树杈,一棵大树分了很多树杈,树杈上又分了树杈,在任何一根树杈的上都有叶子。树杈和叶子都是对象。
  然后明白了这些在说两种导航方式:

  • 一种就是从大树的主干上,根据某个树叶在某个树杈上面的经验,直接找对应树杈,沿着很快就能找到你需要的树叶。
  • 第二种方法是把所有的树杈和树叶都拿出来,看作很多个点,一个个的看是不是你需要的那个树杈或者树叶。
  • NVDA+ 4 6 就是切换当前层级的上一个下一个对象。这里的当前层级,就好比同一根树干上面的树杈和叶子,因为他们都长在共同的树干上面。
  • NVDA+8是找更外层的树干,就好比你现在找到了一个东西,沿着他找到他是从什么地方分叉出来的。
  • NVDA+2就是通过NVDA+4 6找到了一个新的树杈,把当前层级从原来的树杈变成刚听到的这个树杈继续导航。

Eureka 说:

  NVDA的对象浏览方式是树枝型的,你可以理解为桌面相当于树干,我们平时操作的不同软件窗口相当于从树干上发出的第一级树枝,每一根第一级树枝发出的分支就是软件窗口内的子窗口,有的子窗口内还包含下一级的窗口,以此类推,然后呢,我们要操作的对象可以理解为树上的树叶,我们用 NVDA 对象浏览的时候就相当于顺着枝条找树叶。
  那么问题就来了,当我们发现我们现在寻找的这个分支没有我们要的对象或者根本就没有对象(树上总有那么些没有树叶的枝条),这时候我们就需要退回到上一个,或者是上几个分枝处,另外找一个分支继续操作。
  然而还有一些树叶是起视觉装饰作用的,其本身并不可操作,那么为了尽量避免这种情况,NVDA就把类似这样的分支结构过滤掉了,这就是简易浏览模式(这是一个选项,位于 NVDA 设置面板的“浏览光标”类别下)。
  如果你想线性的(一个不漏的)浏览某个窗口,你可以使用 NVDA 加数字小键盘的 3/9,笔记本键盘布局是 NVDA + Shift + PageDown/PageUp 来实现这一点。

Eureka 补充说:

  再做个比喻,按层级的对象导航就好比你在多个工具箱里要找到一把扳手,,而这些工具箱往往在盖子上已经标明了其可能包含哪些工具,比如第一个是“切割类工具箱”,第二个是“刨削类工具箱”第三个是“螺丝刀套装、扳手以及其他小工具”,据我们推测,要找的扳手可能在第三个工具箱里,此时可以直接拿到第三个工具箱打开寻找,可能很快就找到了。
  而线性导航是忽略上面的标签,从第一个箱子到第三个箱子挨个打开寻找,最后在第三个箱子中发现了你想要的扳手。
  两者没有好坏,可以配合使用,最关键的是知道什么时候用什么导航方式才更加高校。

系统焦点导航和对象导航有何区别

你可以认为对象导航是 NVDA 提供给我们的一种增强的导航方式,或者,仅仅只是另一种选择而已。
所谓的系统焦点导航是 Windows 操作系统提供的,即使我们不安装任何读屏软件它也一样可以使用,比如,我们经常按 Tab 键在各个对象之间来回移动,按空格键或回车键能激活相应的对象,比如点击了某个按钮,勾选了某个复选框。
你可能在其他地方听过“控件”这个概念,我们使用的很多软件是由 Windows 的各种控件构成的,这里暂且把“对象”和“控件”视为相同的概念吧,并不影响理解!
上面所谓的“激活某某某对象”暂且认为是点击了某某对象,同样,不影响理解。
还记得吗,我们说使用 Tab 键在各个对象之间移动,当我们移动到某个对象可以按空格键激活它的时候,当前这个对象就具有了系统焦点,或者说具有了焦点,当我们在某个文本框里输入文字时,这个文本框也必定是具有焦点的一个文本框,而我们在输入文字的时候屏幕上会闪烁一个光标,这叫做输入焦点,也可以叫编辑光标。

系统焦点导航和 NVDA 的对象导航只是两种导航模式,他们可以互相独立,也可以相伴而行

  • 相互独立:“你走你的,我走我的,井水不犯河水”,比如我用系统焦点导航在 QQ 上和朋友聊的热火朝天,但是并不耽误我使用对象导航去微信上看看消息。
  • 相伴而行: 对象导航是系统焦点导航的跟屁虫,系统焦点到了哪里,那么对象导航也就在哪里。这样,当然就不能一心二用一边聊 QQ 一边看微信了,

  思考: 为什么你不反过来说,系统焦点导航是对象导航的跟屁虫呢?

  说到这里,思路清晰的同学可能知道了,相伴而行和互相独立这两种模式肯定有个开关吧!他们是对立存在的哦!
  没错,你可以使用 NVDA + 大键盘上的数字7 来切换这两种模式。

  思考: NVDA + 大键盘上的数字 6 是什么功能呢?

两种导航方式,有共通之处,亦有各自的优缺点,那么,我在使用一种方式的时候,发现当前这种方式无法实现我想要的功能,怎么办呢?
使用 NVDA + 大键盘的 7 吗?并非如此,这只是一个开关,如果只是打开这个开关,由于当前的系统焦点没有发生改变,实际上对象导航并不会立即跟随过来。
NVDA 提供了一个快捷键 NVDA + 数字小键盘的-(减号)可以立即把对象导航焦点跟随到系统焦点,有同学要问了,捺如果反过来呢,如何把系统焦点跟随到对象导航焦点,其实只需要在上面的快捷键基础上增加 shift (即 Shift+NVDA+数字小键盘的减号)就可以啦!
要注意,由于不是对象导航遇到的每个对象都具有系统焦点,所以这个反向跟随的操作只能使用快捷键在特定场景下使用,上面的思考也就有答案了:系统焦点导航不能时时跟随对象导航,因为不是每个对象都具有被设置系统焦点的能力。

NVDA 文本查看

NVDA 支持按字、词、行的方式查看屏幕、当前的文档或者当前的对象。
这个功能通常用于那些没有系统输入焦点,不能用上下左右箭头浏览的场景。例如,你可以用它来查看对话框内的长文本信息。又比如,你还可以用它来查看正在撰写的一份长文档的开头部分而不丢失当前的编辑位置,当然,是否丢失当前的编辑位置取决于 NVDA + 大键盘数字 6 的开关状态。

以下快捷键是比较直观的九宫格方式,非常便于记忆:

  • 移动到查看对象的上一行 小键盘数字7
  • 朗读查看对象的当前行 小键盘数字8
  • 移动到查看对象的下一行 小键盘数字9
  • 移动到查看对象的上一个词 小键盘数字4
  • 朗读查看对象的当前词 小键盘数字5
  • 移动到查看对象的下一个词 小键盘数字6
  • 移动到当前查看对象的上一个字 小键盘数字1
  • 朗读查看对象的当前字 小键盘数字2
  • 移动到当前查看对象的下一个字 小键盘数字3