Merged latest audiogame-manager to master, added voice configuration utility.
This commit is contained in:
parent
14093c80ca
commit
9532eef142
@ -271,12 +271,14 @@ unset manualInstall
|
|||||||
# Use menu friendly names.
|
# Use menu friendly names.
|
||||||
gameList=(
|
gameList=(
|
||||||
"Adrian's Doom"
|
"Adrian's Doom"
|
||||||
|
"Battle Zone"
|
||||||
"Bloodshed"
|
"Bloodshed"
|
||||||
"Crazy Party"
|
"Crazy Party"
|
||||||
"Easter Quest"
|
"Easter Quest"
|
||||||
"Kitchensinc Games"
|
"Kitchensinc Games"
|
||||||
"Light Cars"
|
"Light Cars"
|
||||||
"Lockpick"
|
"Lockpick"
|
||||||
|
"Oh Shit!"
|
||||||
"Shades of Doom"
|
"Shades of Doom"
|
||||||
"Super Egg Hunt"
|
"Super Egg Hunt"
|
||||||
"Super Liam"
|
"Super Liam"
|
||||||
@ -286,6 +288,8 @@ gameList=(
|
|||||||
"Technoshock"
|
"Technoshock"
|
||||||
"Top Speed 3"
|
"Top Speed 3"
|
||||||
"Q9"
|
"Q9"
|
||||||
|
"RS Games"
|
||||||
|
"Undead Assault"
|
||||||
)
|
)
|
||||||
|
|
||||||
# With no arguments, open the game launcher.
|
# With no arguments, open the game launcher.
|
||||||
@ -325,6 +329,14 @@ case "${game}" in
|
|||||||
wine "${cache}/adrian's doom.exe" /silent
|
wine "${cache}/adrian's doom.exe" /silent
|
||||||
add_launcher "c:\Program Files\Two Caring Citizens\Adrian's Doom!\adrian.exe"
|
add_launcher "c:\Program Files\Two Caring Citizens\Adrian's Doom!\adrian.exe"
|
||||||
;;
|
;;
|
||||||
|
"Battle Zone")
|
||||||
|
export winVer="win7"
|
||||||
|
install_wine_bottle speechsdk
|
||||||
|
download "https://www.agarchive.net/games/gameMadnessInteractive/battle%20zone%2013.5%20setup.exe"
|
||||||
|
wine "${cache}/battle zone 13.5 setup.exe" /silent
|
||||||
|
add_launcher "c:\Program Files\Battle Zone\ss.exe"
|
||||||
|
rm -fv "${WINEPREFIX}/drive_c/Program Files/Battle Zone/nvdaControllerClient32.dll"
|
||||||
|
;;
|
||||||
"Bloodshed")
|
"Bloodshed")
|
||||||
install_wine_bottle speechsdk
|
install_wine_bottle speechsdk
|
||||||
download "http://www.samtupy.com/games/bloodshed.exe"
|
download "http://www.samtupy.com/games/bloodshed.exe"
|
||||||
@ -335,8 +347,8 @@ case "${game}" in
|
|||||||
install_wine_bottle speechsdk
|
install_wine_bottle speechsdk
|
||||||
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta73.zip"
|
download "http://pragmapragma.free.fr/crazy-party/Crazy-Party-beta73.zip"
|
||||||
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta73.zip"
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/Crazy-Party-beta73.zip"
|
||||||
rm -f "$WINEPREFIX/drive_c/Program Files/Crazy-Party-beta73/nvdaControllerClient32.dll"
|
|
||||||
add_launcher "c:\Program Files\Crazy-Party-beta73\Crazy Party.exe"
|
add_launcher "c:\Program Files\Crazy-Party-beta73\Crazy Party.exe"
|
||||||
|
rm -f "${WINEPREFIX}/drive_c/Program Files/Crazy-Party-beta73/nvdaControllerClient32.dll"
|
||||||
;;
|
;;
|
||||||
"Easter Quest")
|
"Easter Quest")
|
||||||
install_wine_bottle
|
install_wine_bottle
|
||||||
@ -370,6 +382,13 @@ case "${game}" in
|
|||||||
wine "${cache}/lockpicksetup.exe" /silent
|
wine "${cache}/lockpicksetup.exe" /silent
|
||||||
add_launcher "c:\Program Files\lWorks\Lockpick\lockpick.exe"
|
add_launcher "c:\Program Files\lWorks\Lockpick\lockpick.exe"
|
||||||
;;
|
;;
|
||||||
|
"Oh Shit!")
|
||||||
|
export winVer="win7"
|
||||||
|
install_wine_bottle msvcrt40 speechsdk
|
||||||
|
download "http://samtupy.com/stevend/oh_shit.zip"
|
||||||
|
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/oh_shit.zip"
|
||||||
|
add_launcher "c:\Program Files\oh_shit\OhShit.exe"
|
||||||
|
;;
|
||||||
"Shades of Doom")
|
"Shades of Doom")
|
||||||
install_wine_bottle vcrun6
|
install_wine_bottle vcrun6
|
||||||
download "http://www.gmagames.com/sod20022.exe"
|
download "http://www.gmagames.com/sod20022.exe"
|
||||||
@ -440,12 +459,13 @@ case "${game}" in
|
|||||||
wine "${cache}/q9_english_installer.exe" /silent
|
wine "${cache}/q9_english_installer.exe" /silent
|
||||||
add_launcher "c:\Program Files\Q9 Action Game\q9.exe"
|
add_launcher "c:\Program Files\Q9 Action Game\q9.exe"
|
||||||
;;
|
;;
|
||||||
"Undead Assault")
|
"RS Games")
|
||||||
# Does not speak with sapi.
|
# Does not speak with sapi.
|
||||||
install_wine_bottle speechsdk vcrun6sp6
|
export winetricksSettings="vd=1024x768"
|
||||||
download "http://undead-assault.com/static/files/public/undead_assault.zip"
|
install_wine_bottle speechsdk vcrun6
|
||||||
unzip -d "$WINEPREFIX/drive_c/Program Files" "${cache}/undead_assault.zip"
|
download "http://rsgames.org/rsdownloads/rsgclient/rsgames-client-setup-2.01.exe"
|
||||||
add_launcher "c:\Program Files\Undead Assault.exe"
|
wine "${cache}/rsgames-client-setup-2.01.exe" /silent
|
||||||
|
add_launcher "c:\Program Files\RS Games Client\rsg.exe"
|
||||||
;;
|
;;
|
||||||
"Make a One Time Donation")
|
"Make a One Time Donation")
|
||||||
xdg-open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=stormdragon2976@gmail.com&lc=US&item_name=Donation+to+Storm+Games&no_note=0&cn=¤cy_code=USD&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"
|
xdg-open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=stormdragon2976@gmail.com&lc=US&item_name=Donation+to+Storm+Games&no_note=0&cn=¤cy_code=USD&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"
|
||||||
|
162
set-voice.sh
Executable file
162
set-voice.sh
Executable file
@ -0,0 +1,162 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Set Voice
|
||||||
|
# Set the default wine voice based on installed options.
|
||||||
|
#
|
||||||
|
# Copyright 2020, Storm Dragon, <storm_dragon@linux-a11y.org>
|
||||||
|
#
|
||||||
|
# This is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 3, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# This software is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this package; see the file COPYING. If not, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
# 02110-1301, USA.
|
||||||
|
#
|
||||||
|
#--code--
|
||||||
|
|
||||||
|
# Settings to improve accessibility of dialog.
|
||||||
|
export DIALOGOPTS='--insecure --no-lines --visit-items'
|
||||||
|
|
||||||
|
# Get the desired wine bottle
|
||||||
|
|
||||||
|
declare -a bottle
|
||||||
|
for i in $(find ~/.local/wine -maxdepth 1 -type d -not -name 'wine' | sort) ; do
|
||||||
|
bottle+=("$i" "${i##*/}")
|
||||||
|
done
|
||||||
|
export WINEPREFIX="$(dialog --backtitle "Use the up and down arrow keys to find the option you want, then press enter to select it." \
|
||||||
|
--clear \
|
||||||
|
--no-tags \
|
||||||
|
--menu "Select A Wine Bottle" 0 0 0 "${bottle[@]}" --stdout)"
|
||||||
|
|
||||||
|
if [[ -z "${WINEPREFIX}" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "wineprefix = $WINEPREFIX"
|
||||||
|
|
||||||
|
msgbox() {
|
||||||
|
# Returns: None
|
||||||
|
# Shows the provided message on the screen with an ok button.
|
||||||
|
dialog --clear --msgbox "$*" 0 0
|
||||||
|
}
|
||||||
|
|
||||||
|
infobox() {
|
||||||
|
# Returns: None
|
||||||
|
# Shows the provided message on the screen with no buttons.
|
||||||
|
local timeout=3
|
||||||
|
dialog --infobox "$*" 0 0
|
||||||
|
read -n1 -t $timeout continue
|
||||||
|
# Clear any keypresses from the buffer
|
||||||
|
read -t 0.01 continue
|
||||||
|
}
|
||||||
|
|
||||||
|
yesno() {
|
||||||
|
# Returns: Yes or No
|
||||||
|
# Args: Question to user.
|
||||||
|
# Called in if $(yesno) == "Yes"
|
||||||
|
# Or variable=$(yesno)
|
||||||
|
dialog --clear --backtitle "Press 'Enter' for "yes" or 'Escape' for "no"." --yesno "$*" 0 0 --stdout
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo "Yes"
|
||||||
|
else
|
||||||
|
echo "No"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
menulist() {
|
||||||
|
# Args: List of items for menu.
|
||||||
|
# returns: selected tag
|
||||||
|
declare -a menuList
|
||||||
|
for i in "${@}" ; do
|
||||||
|
menuList+=("$i" "$i")
|
||||||
|
done
|
||||||
|
dialog --backtitle "$(gettext "Use the up and down arrow keys to find the option you want, then press enter to select it.")" \
|
||||||
|
--clear \
|
||||||
|
--extra-button \
|
||||||
|
--extra-label "$(gettext "Test Voice")" \
|
||||||
|
--no-tags \
|
||||||
|
--menu "$(gettext "Please select one")" 0 0 0 "${menuList[@]}" --stdout
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
restore_voice() {
|
||||||
|
if [[ $doRestore -eq 0 ]]; then
|
||||||
|
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||||
|
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="'"${oldVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
set_voice() {
|
||||||
|
doRestore=1
|
||||||
|
local tmp="$1"
|
||||||
|
local fullVoice
|
||||||
|
local counter=0
|
||||||
|
for x in ${voiceList[@]} ; do
|
||||||
|
[ "$x" = "$tmp" ] && break
|
||||||
|
counter=$(( $counter + 1 ))
|
||||||
|
done
|
||||||
|
fullVoice=${voiceListFullName[$counter]}
|
||||||
|
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||||
|
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_voice() {
|
||||||
|
doRestore=0
|
||||||
|
local tmp="$1"
|
||||||
|
local fullVoice
|
||||||
|
local counter=0
|
||||||
|
for x in ${voiceList[@]} ; do
|
||||||
|
[ "$x" = "$tmp" ] && break
|
||||||
|
counter=$(( $counter + 1 ))
|
||||||
|
done
|
||||||
|
fullVoice=${voiceListFullName[$counter]}
|
||||||
|
wineserver -k # If we don't do this it's likely wine will overwrite our reverted change or even clobber the registry key entirely
|
||||||
|
sed -i -E -e 's/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"/"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\'"${fullVoice//\\/\\\\}"'"/g' "${WINEPREFIX}/user.reg"
|
||||||
|
cat << "EOF" > /tmp/speak.vbs
|
||||||
|
dim speechobject
|
||||||
|
set speechobject=createobject("sapi.spvoice")
|
||||||
|
speechobject.speak "This is a test of your chosen voice. It contains multiple sentences and punctuation, and is designed to give a full representation of this voices qualities."
|
||||||
|
EOF
|
||||||
|
wine cscript "z:\tmp\speak.vbs"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle voice restore, but only if voice changed
|
||||||
|
doRestore=1
|
||||||
|
trap restore_voice SIGINT
|
||||||
|
|
||||||
|
# Create an array of available voices.
|
||||||
|
ifs="$IFS"
|
||||||
|
IFS=$'\n'
|
||||||
|
voiceListFullName=($(grep -P '\[Software\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^\\]+\].*' "${WINEPREFIX}/system.reg" | sed -E -e 's/\[([^]]+)\].*/\1/g'))
|
||||||
|
IFS="$ifs"
|
||||||
|
voiceList=()
|
||||||
|
for x in "${voiceListFullName[@]}" ; do
|
||||||
|
voiceList+=("$(echo "$x" | rev | cut -d\\ -f1 | rev)")
|
||||||
|
done
|
||||||
|
oldVoice="$(grep -P '"DefaultTokenId"="HKEY_LOCAL_MACHINE\\\\(SOFTWARE|Software)\\\\(Wow6432Node\\\\|)Microsoft\\\\Speech\\\\Voices\\\\Tokens\\\\[^"]+"' "${WINEPREFIX}/user.reg" | sed -E -e 's/"DefaultTokenId"="([^"]+)"/\1/g')"
|
||||||
|
echo "oldVoice: ${oldVoice}"
|
||||||
|
echo "voiceList: ${voiceList[@]}"
|
||||||
|
echo "voiceListFullName: ${voiceListFullName[@]}"
|
||||||
|
#exit 1
|
||||||
|
exit=1
|
||||||
|
while [[ $exit -ne 0 ]] ; do
|
||||||
|
voice="$(menulist ${voiceList[@]})"
|
||||||
|
|
||||||
|
case $? in
|
||||||
|
0)
|
||||||
|
set_voice "$voice" ; exit=0 ;;
|
||||||
|
3)
|
||||||
|
test_voice "$voice";;
|
||||||
|
*)
|
||||||
|
restore_voice ; exit=0 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user