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, "<say-as interpret-as=\"characters\">%c</say-as>", 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;
 }
