speakup: Fix spurious space pronunciation on spelling letters
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 21 Mar 2017 23:55:31 +0000 (00:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Mar 2017 13:00:58 +0000 (14:00 +0100)
This gathers emitting the caps start string, space, spelled letter
string, space, and caps stop string, into one printf, to avoid
sending to the synth a space character alone, which the synth would
then pronounce.

Similarly, emit space along control-letter and letter spelling.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Tested-by: Zahari Yurukov <zahari.yurukov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/speakup/main.c

index f280e22d7e1567932f824a2cd53393e2b6cf3151..b81ca8e09542be3ec5c28736de38b6a60103f173 100644 (file)
@@ -449,20 +449,17 @@ static void speak_char(u16 ch)
                pr_info("speak_char: cp == NULL!\n");
                return;
        }
-       synth_buffer_add(SPACE);
        if (IS_CHAR(ch, B_CAP)) {
                spk_pitch_shift++;
-               synth_printf("%s", spk_str_caps_start);
-               synth_printf("%s", cp);
-               synth_printf("%s", spk_str_caps_stop);
+               synth_printf("%s %s %s",
+                            spk_str_caps_start, cp, spk_str_caps_stop);
        } else {
                if (*cp == '^') {
-                       synth_printf("%s", spk_msg_get(MSG_CTRL));
                        cp++;
-               }
-               synth_printf("%s", cp);
+                       synth_printf(" %s%s ", spk_msg_get(MSG_CTRL), cp);
+               } else
+                       synth_printf(" %s ", cp);
        }
-       synth_buffer_add(SPACE);
 }
 
 static u16 get_char(struct vc_data *vc, u16 *pos, u_char *attribs)