Console Toolkit

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

此选项使 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.exebash 中都有效,但会在屏幕上留下之前的提示符;在 emacs 中无效;在较慢的 SSH 连接上有时不可靠。 - Escape:仅在 cmd.exe 中有效。 - Control+A Control+K:在 bashemacs 中有效;在 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 中使用 tmuxscreen,请确保底部没有显示状态行。在 tmux 中,运行 tmux set status off 来移除状态行,或修改您的 tmux.conf 文件。

故障排除: - 在输出捕获失败后,在控制台中按 上光标 键检查实际执行的命令。 - 恢复到上面提到的默认捕获后缀。 - 尝试“命令提示符编辑”部分的故障排除步骤。