Документация дополнения NVDA Control Ex

Обзор

Дополнение NVDA Control Ex предоставляет интерфейс именованного канала (\\.\pipe\NVDAControlPipe) для внешних приложений, позволяющий отправлять команды в NVDA. Эти команды могут управлять речевым выводом, брайлевским дисплеем и другими функциями NVDA.

Основные возможности

  1. Обмен данными через именованный канал:

  2. Поддерживаемые команды:

  3. Многопоточная архитектура:


Как использовать

1. Установка дополнения

2. Активация дополнения

3. Отправка команд через именованный канал

4. Поддерживаемые команды и аргументы

Команда Аргументы Описание
speak text, reason (unused), symbolLevel Озвучивает предоставленный текст.
speakSpelling text, locale, useCharacterDescriptions Произносит текст по буквам.
speakSsml ssml, markCallback (unused), symbolLevel Озвучивает контент в формате SSML.
pauseSpeech switch Приостанавливает или возобновляет речевой вывод.
cancelSpeech None Отменяет текущий речевой вывод.
braille text Отображает предоставленный текст на брайлевском дисплее.
active None Отвечает “NVDA” для подтверждения активности дополнения.

Пример использования

Отправка команды из внешнего приложения

Для отправки команды в NVDA можно использовать любой язык программирования, поддерживающий именованные каналы Windows. Ниже приведён пример на языке C:
Я использую интерфейс из этого репозитория
Эти файлы можно найти в директории Dep: nvdacontrol.h и nvdacontrol.c.

#include <nvda_control.h>

int main() {
    // Шаг 1: Подключение к именованному каналу NVDA
    if (nvda_connect() != 0) {
        fprintf(stderr, "Failed to connect to NVDA.\n");
        return -1;
    }

    // Шаг 2: Отправка команды для озвучивания текста
    const char* textToSpeak = "Hello, this is a test of the NVDA control interface.";
    int symbolLevel = NVDA_SYMBOL_LEVEL_ALL; // Использовать всю пунктуацию

    if (nvda_speak(textToSpeak, symbolLevel) != 0) {
        fprintf(stderr, "Failed to send speak command to NVDA.\n");
        nvda_disconnect();
        return -1;
    }

    // Опционально: Приостановка речевого вывода для демонстрации
    if (nvda_pause_speech(1) != 0) {
        fprintf(stderr, "Failed to pause speech.\n");
    }

    // Ожидание несколько секунд (для демонстрации)
    Sleep(3000); // Ожидание 3 секунды

    // Возобновление речевого вывода
    if (nvda_pause_speech(0) != 0) {
        fprintf(stderr, "Failed to unpause speech.\n");
    }

    // Шаг 3: Отключение от NVDA
   
nvda_disconnect();

return 0;

}
```

Устранение неполадок

  1. Дополнение не отвечает:

  2. Проблемы с подключением к именованному каналу:

  3. Ошибки выполнения команд: