in speakup/main.c [421:454]
static void speak_char(u16 ch)
{
char *cp;
struct var_t *direct = spk_get_var(DIRECT);
if (ch >= 0x100 || (direct && direct->u.n.value)) {
if (ch < 0x100 && IS_CHAR(ch, B_CAP)) {
spk_pitch_shift++;
synth_printf("%s", spk_str_caps_start);
}
synth_putwc_s(ch);
if (ch < 0x100 && IS_CHAR(ch, B_CAP))
synth_printf("%s", spk_str_caps_stop);
return;
}
cp = spk_characters[ch];
if (!cp) {
pr_info("%s: cp == NULL!\n", __func__);
return;
}
if (IS_CHAR(ch, B_CAP)) {
spk_pitch_shift++;
synth_printf("%s %s %s",
spk_str_caps_start, cp, spk_str_caps_stop);
} else {
if (*cp == '^') {
cp++;
synth_printf(" %s%s ", spk_msg_get(MSG_CTRL), cp);
} else {
synth_printf(" %s ", cp);
}
}
}