// SPDX-License-Identifier: LGPL-2.1-or-later typedef [v1_enum] enum tagSPEECH_PRIORITY { SPEECH_PRIORITY_NORMAL = 0, SPEECH_PRIORITY_NEXT = 1, SPEECH_PRIORITY_NOW = 2 } SPEECH_PRIORITY; typedef [v1_enum] enum tagSYMBOL_LEVEL { SYMBOL_LEVEL_NONE = 0, SYMBOL_LEVEL_SOME = 100, SYMBOL_LEVEL_MOST = 200, SYMBOL_LEVEL_ALL = 300, SYMBOL_LEVEL_CHAR = 1000, SYMBOL_LEVEL_UNCHANGED = -1 } SYMBOL_LEVEL; [ uuid(DFF50B99-F7FD-4ca7-A82C-DAEB3E025295), version(1.0) ] interface NvdaController { error_status_t __stdcall testIfRunning(); error_status_t __stdcall speakText([in, string] const wchar_t *text); error_status_t __stdcall cancelSpeech(); error_status_t __stdcall brailleMessage([in, string] const wchar_t *message); }; [ uuid(3D168D45-CB58-4270-8257-4E0BE515D557), version(1.0) ] interface NvdaController2 { error_status_t __stdcall getProcessId([out] unsigned long *pid); error_status_t __stdcall speakSsml( [in, string] const wchar_t *ssml, [in] const SYMBOL_LEVEL symbolLevel, [in] const SPEECH_PRIORITY priority, [in] const boolean asynchronous); // WIDL lacks MIDL's callback attribute. Keeping this method in slot 2 // preserves the wire layout used by the unmodified controller client. error_status_t __stdcall onSsmlMarkReached([in, string] const wchar_t *mark); }; [ uuid(019e4216-a9a1-7540-a217-e1a2d2793025), version(1.0) ] interface NvdaController3 { error_status_t __stdcall isSpeaking([out] boolean *speaking); };