单词导航
- 作者: Tony Malykh
- 下载 [稳定版]
- NVDA 兼容性:2019.3 及更高版本
NVDA 单词导航插件 WordNav 改进了 NVDA 原有的单词导航方式,支持选择文本,同时还增加了一些额外的单词导航命令,这些命令采用不同的单词定义。
大多数文本编辑器支持“Ctrl+左右箭头”命令来进行单词导航,但对于单词的定义在这些应用程序之间则存在差异,尤其是现在一些基于 web 的文本编辑器,如 Monaco。为了正确地朗读单词,NVDA 应当知道给定的应用程序中是如何定义单词的。如果 NVDA 不知道单词的确切定义,不仅给定的单词会被跳过,而且有可能将单词朗读数次。不仅如此,一些基于 web 的文本编辑器将光标置于单词的末尾而不是开头,这就使视障用户的编辑更加困难了。为了克服这些困难,我创建了一些用于单词导航的增强命令。这些命令引进了 Notepad++ 的单词定义,并且不依赖于编辑器程序对单词的定义,而是由 NVDA 将文本行解析为单词的。甚至“Ctrl+左右箭头”这样的手势也不会被发送到编辑器程序,这便确保了朗读的一致性。
单词导航和单词定义
目前,单词导航插件支持五种单词定义,并为它们分配了相应的手势:
左 Ctrl+箭头
: Notepad++ 定义。它将字母、数字作为单词处理,同时把临近的标点符号也视为单词。对大多数用户而言,这应当是最便捷的单词定义了。右 Ctrl+箭头
:精细单词定义。它可以将“camelCaseIdentifiers
”(驼峰命名法)和“underscore_separated_identifiers
”(下划线命名法)拆分成若干部分,从而实现单词导航。左 Ctrl+Windows+箭头
:大型单词定义。它将临近文本的几乎所有标点符号都作为一个单词的一部分,因此它会把像“C:\directory\subdirectory\file.txt
”这样的路径作为一个大型单词处理。右 Ctrl+Windows+箭头
:多单词定义。它把多个单词组合起来进行导航操作(也就是一次可以阅读多个单词)。要组合起来的单词数是可以自定义的。- 默认未分配手势: 自定义正则表达式单词导航。允许用户使用正则表达式定义单词的拆分规则。
这些手势在单词导航的设置面板中可以自定义。
单词选择
从 WordNav v2.0 起,支持单词选择。只需将“shift”修饰键加入到相应的单词导航手势即可选择单词。还有另外一种选词手势:
Ctrl+Shift+Numpad1
和Ctrl+Windows+Shift+Numpad1
向右选择单词,类似于相应的单词选择加右箭头
的行为,但不同的是该方式的选择会包含尾随空格。
请注意,当前使用的 Accessibility API 存在多个影响单词选择的问题。请了解以下问题列表和对应的解决方案:
- 使用 UIA 接口的应用程序(例如新版记事本、Visual Studio、Microsoft Word)不支持在选择开始时设置插入符。在这些应用程序中,插入符位置存储在 WordNav 端。相应的副作用是单词导航命令可能无法与行和段落选择命令(“shift+上/下箭头”、“control+shift+上/下箭头”)兼容,操作结果不可预测。为了方便起见,UIA 应用程序的字符选择命令(“shift+左/右箭头”) 在 WordNav 中更新,这应该可以正常工作。
- 普通的单行 Windows 编辑框也不允许在选择前面设置插入符号,因此上述问题也适用于此类编辑框。这会影响 NVDA 中的所有单行编辑框。
- IAccessible2 没提供跨多个段落设置选择的方法。此问题没有已知的解决方案。这将会影响 Chrome 和 Firefox 中的多行富文本编辑框,例如 GMail 中的撰写电子邮件文本区域和 Thunderbird 中的撰写电子邮件窗口。
- 在 Notepad++ 中,提示选择的消息响应速度非常慢。作为解决方法,WordNav 在 NVDA 端朗读单词选择,并在接下来的 0.5 秒内静音延迟通知。因此,如果您快速连续按下单词选择命令,然后再按下另一个(例如字符)选择命令,并且如果后一个命令在距最后一个单词选择命令 0.5 秒内出现,您可能听不到后一个已选择消息。
- 在支持 TOM 接口的多行编辑框中,使用单词选择时,NVDA 会错误地识别光标位置。此问题已在 nvaccess/nvda#16455 中修复,已包含在 NVDA2024.2 版本中。在此版本之前,单词选择命令无法在 TOM 编辑框中正常工作,例如 NVDA 日志查看器。
注意
- 如果您想使用 Windows 10 的虚拟桌面功能,请记住在“单词导航”设置面板或 NVDA 输入手势对话框中禁用 Ctrl+Windows+箭头的快捷键。
- 若希望单词导航与 VSCode 兼容,需要安装 NVDA 插件 IndentNav v2.0 或更高版本。此外,VSCode 扩展 Accessibility for NVDA IndentNav 也必须安装。
下载
请从 NVDA 插件商店安装最新版本。