from __future__ import absolute_import import os import platform import ctypes from platform_utils import paths from libloader import load_library from .base import Output class NVDA(Output): """Supports The NVDA screen reader""" name = "NVDA" lib32 = 'nvdaControllerClient32.dll' lib64 = 'nvdaControllerClient64.dll' argtypes = { 'nvdaController_brailleMessage': (ctypes.c_wchar_p,), 'nvdaController_speakText': (ctypes.c_wchar_p,), } def is_active(self): try: return self.lib.nvdaController_testIfRunning() == 0 except: return False def braille(self, text, **options): self.lib.nvdaController_brailleMessage(text) def speak(self, text, interrupt=False): if interrupt: self.silence() self.lib.nvdaController_speakText(text) def silence(self): self.lib.nvdaController_cancelSpeech() output_class = NVDA