52 lines
1.2 KiB
Lua
52 lines
1.2 KiB
Lua
-- love2talk — vendored from d:\code\love2talk
|
|||
|
|
-- See VENDORED.md for the list of local modifications.
|
||
|
|
|
||
|
|
local os = love.system.getOS()
|
||
|
|
|
||
|
|
local backend -- upstream leaked this as a global; scoped to the module here
|
||
|
|
|
||
|
|
if os == "Windows" then
|
||
|
|
backend = require "accessibility.vendor.love2talk.tolk"
|
||
|
|
backend.trySAPI(true)
|
||
|
|
elseif os == "OS X" then
|
||
|
|
backend = require "accessibility.vendor.love2talk.macspeech"
|
||
|
|
end
|
||
|
|
|
||
|
|
local function say(text, interrupt)
|
||
|
|
if not backend then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
interrupt = interrupt or false
|
||
|
|
if os == "Windows" then
|
||
|
|
backend.output(text, interrupt)
|
||
|
|
else
|
||
|
|
backend.output(text)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local function isSpeaking()
|
||
|
|
if not backend then
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
return backend.isSpeaking()
|
||
|
|
end
|
||
|
|
|
||
|
|
local function silence()
|
||
|
|
if not backend or not backend.silence then
|
||
|
|
return
|
||
|
|
end
|
||
|
|
backend.silence()
|
||
|
|
end
|
||
|
|
|
||
|
|
-- LOCAL ADDITION: exposed for diagnostics. Tells us whether Tolk actually found a
|
||
|
|
-- speech channel (a running screen reader, or the SAPI fallback) as opposed to
|
||
|
|
-- merely having loaded the DLL successfully.
|
||
|
|
local function hasSpeech()
|
||
|
|
if not backend or not backend.hasSpeech then
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
return backend.hasSpeech()
|
||
|
|
end
|
||
|
|
|
||
|
|
return {say = say, isSpeaking = isSpeaking, silence = silence, hasSpeech = hasSpeech}
|