Fix spelling keystrokes and char-by-char echo. --- espeakup-0.71.orig/synth.c +++ espeakup-0.71/synth.c @@ -121,7 +121,29 @@ { espeak_ERROR rc; - rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL, - NULL); + if (s->len == 1) + { + char *buf; + int n; + n = asprintf(&buf, "%c", s->buf[0]); + if (n == -1) + { + /* D'oh. Not much to do on allocation failure. + * Perhaps espeak will happen to say the character */ + rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL, + NULL); + } + else + { + rc = espeak_Synth(buf, n + 1, 0, POS_CHARACTER, 0, espeakSSML, NULL, + NULL); + free(buf); + } + } + else + { + rc = espeak_Synth(s->buf, s->len + 1, 0, POS_CHARACTER, 0, 0, NULL, + NULL); + } return rc; }