Le 12/01/2021 à 23:13, Samuel Thibault a écrit : > They are on this very list (speakup@xxxxxxxxxxxxxxxxx) So please, readers of this thread having users of talkwith and speakupconf, try these scripts and let us know what you think. >> It is. these commands should be replaced if another init system. >> >> This shouldn't be difficult, but I have zero experience with other init >> systems > > Experience is something that can be acquired. Maybe by young folks. I'm nearly 72y old... This being said, assuming hat most readers are using systemd, maybe they just can replace for instance in speak-with: chmod 644 /etc/rc.d/rc.espeakup by systemctl disable espeakup.service chmod 755 /etc/rc.d/rc.espeakup by systemctl disable espeakup.service sh /etc/rc.d/rc.espeakup start by systemctl start espeakup.service sh /etc/rc.d/rc.espeakup stop by systemctl stop espeakup.service PS I just realized that the syntax in this line of speakup-save and speakup-restore: SYNTH=$(</sys/accessibility/speakup/synth) is not specified by POSIX I should have written instead: SYNTH=$(cat /sys/accessibility/speakup/synth) I reattach the (corrected) scripts to this email with for convenience. Didier
#!/bin/sh if [ ! $(id -u) -eq 0 ]; then gettext -s "Please run this script as root." exit fi if [ ! -f /sys/accessibility/speakup/synth ]; then gettext -s "speakup being not in use, there is no setting to save." exit fi SYNTH=$(cat /sys/accessibility/speakup/synth) if [ "$SYNTH" = "none" ]; then gettext -s "speakup being not in use, there is no setting to save." exit fi ESPEAKUP=$(ps -C espeakup --noheaders|wc -l) SPEECHD_UP=$(ps -C speechd-up --noheaders|wc -l) # We save settings separately for: # espeakup # each hard synthesizer # speechd-up # so that we restore the relevant settings for the synthesizer and # case occurring the screen reader in use. if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ] && [ $SPEECHD_UP -ne 0 ]; then gettext -s "espeakup and speechd-up are both running, not saving settings." exit fi if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -eq 0 ] && [ $SPEECHD_UP -eq 0 ]; then gettext -s "neither espeakup nor speechd-up is running, not saving settings." exit fi if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ]; then SYNTH="espeakup" fi if [ "$SYNTH" = "soft" ] && [ $SPEECHD_UP -ne 0 ]; then SYNTH="speechd-up" fi # If SYNTH has not been set to speechd-up or speakup it is the hard synth # in use. mkdir -p /var/lib/speakup/$SYNTH cd /sys/accessibility/speakup for i in $(find . -type d|sed "/^.$/d;s/..//"); do mkdir -p /var/lib/speakup/$SYNTH/$i done for i in $(find . -type f|sed "s/..//"|grep -v -e silent -e version -e "synth.*"); do if [ -f $i ] && [ -w $i ]; then cp $i /var/lib/speakup/$SYNTH/$i fi done gettext "Current speakup settings have been saved in " echo "/var/lib/speakup/$SYNTH."
#!/bin/sh if [ ! $(id -u) -eq 0 ]; then gettext -s "Please run this script as root." exit fi if [ ! -f /sys/accessibility/speakup/synth ]; then gettext -s "speakup being not in use, there is no setting to restore." exit elif [ "$(</sys/accessibility/speakup/synth)" = "none" ]; then gettext -s "speakup being not in use, there is no setting to restore." exit fi SYNTH=$(cat /sys/accessibility/speakup/synth) ESPEAKUP=$(ps -C espeakup --noheaders|wc -l) SPEECHD_UP=$(ps -C speechd-up --noheaders|wc -l) # We saved settings separately for: # espeakup # each hard synthesizer # speechd-up # so that we restore the relevant settings for the synthesizer and # screen reader in use. SAVEDSYNTH="$SYNTH" if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ]; then SAVEDSYNTH="espeakup" fi if [ "$SYNTH" = "soft" ] && [ $SPEECHD_UP -ne 0 ]; then SAVEDSYNTH="speechd-up" fi # If SYNTH has not been set to speechd-up or speakup a hard synth is # in use, like e.g. SAVEDSYNTH=apollo if [ ! -d /var/lib/speakup/$SAVEDSYNTH ]; then gettext -s "No speakup settings saved for $SAVEDSYNTH, so nothing to restore." exit fi cd /var/lib/speakup/$SAVEDSYNTH ls|while read i; do if [ -w /sys/accessibility/speakup/$i ] && [ -f /sys/accessibility/speakup/$i ]; then cp $i /sys/accessibility/speakup/ fi done if [ -d i18n ] && [ -d /sys/accessibility/speakup/i18n ]; then ( cd i18n ls|while read i; do if [ -w /sys/accessibility/speakup/i18n/$i ]; then cp $i /sys/accessibility/speakup/i18n/ fi done ) fi ( cd $SYNTH ls|while read i; do if [ -w /sys/accessibility/speakup/$SYNTH/$i ]; then cp $i /sys/accessibility/speakup/$SYNTH/ fi done ) gettext -s "speakup settings have been restored for $SAVEDSYNTH."
#!/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
_______________________________________________ Speakup mailing list Speakup@xxxxxxxxxxxxxxxxx http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup