[PATCH 4/4] speakup: Add documentation on changing the speakup messages language
Didier Spaier
didier at slint.fr
Mon Jan 11 18:38:15 EST 2021
One more, similar to talkwith, handles also fenrir.
Didier
-------------- next part --------------
#!/bin/sh
# Didier Spaier <didier~at~slint.fr> 2019
# I wrote this script from scratch and put it in the public domain.
# I assume that the packages espeakup and speechd-up are installed.
# If fenrir is installed, it can also be used.
if [ ! $(id -u) -eq 0 ]; then
echo "Please run this script as root."
exit
fi
speakup=" a hard synthesizer (type its name, like \"apollo\" or \"acntsa\")"
if [ -x /usr/bin/espeakup ]; then
espeakup=" espeakup (Console screen reader connecting espeak-ng and speakup)\n"
n1="espeakup"
fi
if [ -x /usr/bin/speechd-up ]; then
speechd_up=" speechd-up (Console screen reader connecting Speech Dispatcher and speakup)"
n2="speechd-up"
fi
if [ -x /usr/bin/fenrir ]; then
fenrir=" fenrir (Modular, flexible and fast console screen reader)\n"
n3="fenrir"
fi
readers="$espeakup$fenrir$speechd_up"
hardlist="$(zgrep SPEAKUP_S /proc/config.gz|grep [ym]|grep -v DUMMY| \
sed 's/CONFIG_SPEAKUP_SYNTH_//;s/..$//'|tr '[:upper:]' '[:lower:]')"
usage() {
echo "Usage: $0 <screen reader> or <hard synthesizer> or none"
echo "Choose a console screen reader to talk with among:"
echo -e "$readers"
echo "or use one of the supported hard synthesizers:"
echo " "$hardlist
echo "or type \"$0 none\" to mute all screen readers."
exit
}
to_lower() {
echo "$1"|tr '[:upper:]' '[:lower:]'
}
ARGUMENT=$(to_lower $1)
if [ $# -ne 1 ]; then usage; fi
if [ ! "$ARGUMENT" = "$n1" ] && \
[ ! "$ARGUMENT" = "$n2" ] && \
[ ! "$ARGUMENT" = "$n3" ] && \
! echo $hardlist| grep -qw $ARGUMENT && \
[ ! "$ARGUMENT" = "none" ]; then
echo "$1 is not a valid argument of this command."
usage
exit
fi
# We first check which console screen reader is already running, if any.
if [ ! "$(ps -C fenrir --noheaders|wc -l)" = "0" ]; then
FENRIR=y
fi
if [ -f /sys/accessibility/speakup/synth ]; then
SPKSYNTH=$(cat /sys/accessibility/speakup/synth)
if [ "$SPKSYNTH" = "soft" ]; then
if [ ! "$(ps -C speechd-up --noheaders|wc -l)" = "0" ]; then
SPEECHDUP="y"
fi
if [ ! "$(ps -C espeakup --noheaders|wc -l)" = "0" ]; then
ESPEAKUP="y"
fi
else
HARD=$SPKSYNTH
fi
fi
# If a hard synth is in use store its name as we need to override it to
# use a soft synth instead if wished, but we need to restore it if the
# user does not want a permanent change.
if [ -f /etc/speakup.conf ]; then
. /etc/speakup.conf
fi
case $ARGUMENT in
espeakup)
if [ ! -x /usr/bin/espeakup ]; then
echo "espeakup is not installed."
exit
fi
if [ "$ESPEAKUP" = "y" ]; then
echo "$1 is already started."
exit
fi
if [ "$FENRIR" = "y" ]; then
[ -f /etc/rc.d/rc.fenrir ] && sh /etc/rc.d/rc.fenrir stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.espeakup start
sleep 1
printf "Should espeakup be also started at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 755 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
speechd-up)
if [ ! -x /usr/bin/speechd-up ]; then
echo "speechd-up is not installed."
exit
fi
if [ "$SPEECHDUP" = "y" ]; then
echo "speechd-up is already started."
exit
fi
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.speechd-up start
sleep 1
printf "Should speechd-up be also started at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
chmod 755 /etc/rc.d/rc.speechd-up
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
fenrir)
if [ ! -x /usr/bin/fenrir ]; then
echo "fenrir is not installed."
exit
fi
if [ "$FENRIR" = "y" ]; then
echo "fenrir is already started."
exit
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ ! "$SPKSYNTH" = "" ]; then
echo none > /sys/accessibility/speakup/synth
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.fenrir start
sleep 1
clear
printf "Should fenrir be also started at boot time? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
chmod 755 /etc/rc.d/rc.fenrir
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
none)
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
if [ ! "$SPKSYNTH" = "" ]; then
echo none > /sys/accessibility/speakup/synth
fi
printf "Do you also want a mute console at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
echo "OK"
fi
;;
*)
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
modprobe speakup_$ARGUMENT 2>/dev/null
echo $ARGUMENT > /sys/accessibility/speakup/synth
if [ $? != 0 ]; then
echo "Unable to switch to the $ARGUMENT synthesizer."
echo "Something should be wrong."
exit 1
fi
printf "Should $ARGUMENT be also used at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
chmod 755 /etc/rc.d/rc.espeakup
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=$ARGUMENT" >> /etc/speakup.conf
echo "Done."
fi
esac
More information about the Speakup
mailing list