static void speak_char()

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);
		}
	}
}