Console Toolkit 是一款 NVDA 插件,为 Windows 控制台(也称为命令提示符)提供辅助功能改进。该插件同样适用于 Windows PowerShell。部分功能可能也适用于其他终端,例如 Cygwin、PuTTY 和 Windows Terminal 等,但该插件仅在默认的 Windows 控制台中经过了仔细测试。SSH 用户可能会发现这款插件特别方便。
部分功能曾是 Tony's enhancements 插件 的一部分。
从插件商店安装。
Console Toolkit 在 UIA 控制台中重写了 Shift+数字键盘7 命令:它现在会朗读窗口顶部的第一行可见内容,而不是整个缓冲区的第一行。连按两次 Shift+数字键盘7 可恢复旧版行为,朗读缓冲区的第一行。
此选项使 NVDA 在控制台有新内容输出时立即朗读,而不是将新的语音内容加入队列。例如,如果 NVDA 正在朗读 1 分钟前屏幕上出现的一行内容,而此时又出现新的一行,此选项会打断旧内容的朗读并立即开始朗读新内容,从而更及时地反馈控制台窗口中的变化。
每当控制台文本更新时,播放一个低音调的提示音。
此选项使 Control+V 快捷键能在 ssh 会话中正常工作。
注意:此功能为实验性功能。在反馈问题前,请仔细阅读本节内容,并确保您已了解其工作原理。
按 NVDA+E 可识别控制台窗口中的当前提示符,并在一个无障碍的“编辑提示符”窗口中进行编辑。编辑后,您可以按 Escape 更新当前命令行,或按 回车 更新并立即执行当前命令。此外,您也可以按 Alt+F4 关闭编辑提示符窗口而不更新命令行。
此功能已在 Windows 命令提示符 cmd.exe、通过 ssh 连接的 bash shell、以及 WSL 和 Cygwin 中进行过测试。该功能也可能适用于其他的 Unix shell,但未经测试。
以下是该插件提取当前命令的方式:
1. 它会按下 行尾 键,然后发送一个控制字符(这是一个罕见的、不太可能在别处使用的 Unicode 字符)。
2. 接着,它会按下 行首 键并发送另一个控制字符。
3. 然后,它会等待控制字符出现在屏幕上,这在较慢的 SSH 连接上可能需要一些时间。
4. 两个控制字符之间的内容即为命令。
5. 当 NVDA 设置中的“Windows 控制台支持”使用 UIA 接口时,它会在字符串开头多发送一个控制字符。这是为了正确解析多行命令:UIA 接口的实现会裁剪每行末尾的空白,因此为了推断两行之间是否存在空格,我们需要将它们移动一个字符的位置。但请注意,这种方式不保留单词间的空格数量,只确保存在空格。
6. 在编辑之前,插件会通过将光标置于开头和末尾并模拟按下 删除 和 退格 键来确保移除这些控制字符。
7. 它会在“编辑提示符”窗口中呈现命令,供用户查看或编辑。
8. 用户按下 回车 或 Escape 后,它会首先擦除控制台中的当前行。这通过四种方法之一实现,具体方法可配置。目前支持四种方法:
- Control+C:在 cmd.exe 和 bash 中都有效,但会在屏幕上留下之前的提示符;在 emacs 中无效;在较慢的 SSH 连接上有时不可靠。
- Escape:仅在 cmd.exe 中有效。
- Control+A Control+K:在 bash 和 emacs 中有效;在 cmd.exe 中无效。
- 退格(推荐):在所有环境中都有效;但速度较慢,且如果行长度发生变化可能会破坏内容。
9. 然后,插件会模拟键盘输入来键入更新后的命令,并根据需要模拟按下 回车 键。
故障排除:
- 验证 行首、行尾、删除 和 退格 键在您的控制台中是否按预期工作。
- 验证您的控制台是否支持 Unicode 字符。某些 ssh 连接不支持 Unicode。
- 验证所选的删除方法在您的控制台中是否有效。
注意:此功能为实验性功能。在反馈问题前,请仔细阅读本节内容,并确保您已了解其工作原理。
在命令行或“编辑提示符”窗口中,按 Control+回车 来捕获命令输出。此插件能够捕获跨越多个屏幕的大量输出,但当输出超过 10 屏时,捕获过程会花费较长时间。插件会播放一个长提示音,该提示音将持续到插件捕获完当前运行命令的输出,或直到超时为止。此外,您也可以按 NVDA+E 中断捕获。
当 NVDA 设置中的“Windows 控制台支持”使用 UIA 接口时,您可以在捕获过程中切换到其他窗口。但是,如果禁用了此选项,NVDA 将会使用旧版控制台代码,该代码仅在控制台获得焦点时有效,因此切换到任何其他窗口都会暂停捕获。
命令捕获通过将命令输出重定向到 less 命令来实现。默认附加到命令后的后缀是:
|less -c 2>&1
请仅在您清楚自己在做什么的情况下才更改它。此插件知道如何与 less 命令的输出进行交互,以逐页检索输出。
在 Windows 上,需要单独安装 less.exe 工具。您可以通过 Cygwin 安装,或从其他地方下载 Windows 二进制文件。
如果您在 Linux 中使用 tmux 或 screen,请确保底部没有显示状态行。在 tmux 中,运行
tmux set status off
来移除状态行,或修改您的 tmux.conf 文件。
故障排除:
- 在输出捕获失败后,在控制台中按 上光标 键检查实际执行的命令。
- 恢复到上面提到的默认捕获后缀。
- 尝试“命令提示符编辑”部分的故障排除步骤。