Інструменти консолі (Console Toolkit) для NVDA

Інструменти консолі — це додаток NVDA, який забезпечує покращену доступність стандартної консолі Windows (Command Prompt).
Також він добре працює у Windows PowerShell. Деякі можливості можуть працювати й в альтернативних терміналах, таких як Cygwin, PuTTY та Windows Terminal, проте додаток ретельно тестувався лише зі стандартною консоллю Windows.
Користувачі SSH знайдуть цей додаток особливо корисним.

Деякі функції раніше були частиною додатка Tony's enhancements.

Завантаження

Встановлюйте з магазину додатків NVDA.

Перехід до першого видимого рядка

Console Toolkit змінює дію команди shift+numpad7 у консолях з підтримкою UIA: замість озвучування першого рядка у всьому буфері NVDA читає перший видимий рядок у верхній частині вікна.
Натисніть shift+numpad7 двічі, щоб повернути попередню поведінку (читання першого рядка буфера).

Озвучення консолі в реальному часі

Ця опція змушує NVDA одразу озвучувати нові рядки по мірі їх появи у виводі консолі, замість постановки їх у чергу.
Наприклад, якщо NVDA все ще читає рядок, що з’явився хвилину тому, і зараз з’являється новий рядок, ця опція зупинить озвучення старого й почне читати новий одразу. Це забезпечує більш оперативний зворотний зв’язок про події у вікні консолі.

Сигнал при оновленні консолі

Видає короткий звуковий сигнал низького тону щоразу, коли текст у консолі оновлюється.

Примусове використання Control+V у консолях

Ця опція забезпечує працездатність комбінації Control+V всередині SSH-сеансів.

Експериментально: редагування запиту (prompt editing)

Примітка: Ця функція є експериментальною. Будь ласка, уважно ознайомтеся з цим розділом, перш ніж повідомляти про проблеми.

Натисніть NVDA+E, щоб визначити поточний запит у вікні консолі й відкрити його у доступному вікні «Редагування запиту».
Після редагування можна натиснути Escape, щоб оновити поточний рядок команди, або Enter, щоб оновити та одразу виконати команду.
Альтернативно, Alt+F4 закриє вікно редагування без змін.

Функцію протестовано у командному рядку Windows (cmd.exe), у bash через SSH, а також у WSL і cygwin. Можливо, вона працюватиме і в інших Unix-оболонках, але це не перевірялося.

Як працює отримання команди:

  1. Натискається клавіша End і надсилається керівний символ Unicode, який малоймовірно використовується деінде.
  2. Потім натискається Home і надсилається інший керівний символ.
  3. Додаток очікує появу цих символів на екрані (може бути довго у випадку повільних SSH-з’єднань).
  4. Командою вважається все, що між двома символами.
  5. Якщо у налаштуваннях NVDA ввімкнено «Використовувати UI Automation для доступу до консолі Windows», надсилається ще один символ на початку. Це дозволяє правильно обробляти багаторядкові команди. (UIA обрізає пробіли наприкінці рядків, тому потрібно робити зсув.)
  6. Перед редагуванням додаток видаляє керівні символи, симулюючи натискання Delete і Backspace.
  7. Команда показується у вікні «Редагування запиту» для перегляду й зміни.
  8. Після натискання Enter або Escape поточний рядок у консолі видаляється. Для цього використовується один з 4 методів (налаштовується у параметрах):
  9. Control+C: працює у cmd.exe і bash, але залишає старий запит на екрані; не працює в emacs; ненадійно при повільному SSH
  10. Escape: працює лише у cmd.exe
  11. Control+A Control+K: працює у bash і emacs, але не у cmd.exe
  12. Backspace (рекомендовано): працює всюди, але повільніше й може давати збої, якщо довжина рядка змінилася
  13. Далі додаток симулює введення зміненої команди та, за потреби, натискання Enter.

Вирішення проблем:

Експериментально: захоплення виводу команд

Примітка: Ця функція також є експериментальною. Ознайомтеся з описом, перш ніж повідомляти про проблеми.

У командному рядку або у вікні «Редагування запиту» натисніть Control+Enter, щоб захопити вивід команди.
Додаток може обробляти великий вивід, що займає кілька екранів. Якщо він перевищує 10 екранів, процес займає помітний час.
Під час захоплення відтворюється довгий сигнал, який триває доти, доки триває захоплення, або до завершення за тайм-аутом.
Щоб перервати захоплення, натисніть NVDA+E.

Якщо у налаштуваннях NVDA увімкнено опцію «Використовувати UI Automation для доступу до консолі Windows», ви можете перемикатися між вікнами під час захоплення. Якщо ж опція вимкнена, використовується старий режим, який працює тільки при активній консолі. Перехід до іншого вікна призупиняє захоплення.

Як це працює:

Захоплення здійснюється шляхом перенаправлення виводу команди у less.
За замовчуванням до команд додається суфікс:
|less -c 2>&1 Змінюйте його лише якщо впевнені у своїх діях. Додаток вміє отримувати вивід з less сторінка за сторінкою.

У Windows інструмент less.exe потрібно встановити окремо (через cygwin або завантажити бінарник).

У Linux із tmux чи screen переконайтеся, що статусний рядок унизу вимкнено. Для tmux:
tmux set status off або змініть файл tmux.conf.

Вирішення проблем: