mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
speakup: Support spelling unicode characters
This supports spelling unicode characters by just passing them to the speech synthesis in direct mode. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c188966067
commit
33590c1852
1 changed files with 9 additions and 9 deletions
|
@ -432,7 +432,7 @@ static void speak_char(u16 ch)
|
|||
char *cp;
|
||||
struct var_t *direct = spk_get_var(DIRECT);
|
||||
|
||||
if (direct && direct->u.n.value) {
|
||||
if (ch >= 0x100 || (direct && direct->u.n.value)) {
|
||||
if (IS_CHAR(ch, B_CAP)) {
|
||||
spk_pitch_shift++;
|
||||
synth_printf("%s", spk_str_caps_start);
|
||||
|
@ -443,8 +443,6 @@ static void speak_char(u16 ch)
|
|||
return;
|
||||
}
|
||||
|
||||
if (ch >= 0x100)
|
||||
return;
|
||||
cp = spk_characters[ch];
|
||||
if (cp == NULL) {
|
||||
pr_info("speak_char: cp == NULL!\n");
|
||||
|
@ -712,17 +710,16 @@ static void spell_word(struct vc_data *vc)
|
|||
char *cp1;
|
||||
char *str_cap = spk_str_caps_stop;
|
||||
char *last_cap = spk_str_caps_stop;
|
||||
struct var_t *direct = spk_get_var(DIRECT);
|
||||
u16 ch;
|
||||
|
||||
if (!get_word(vc))
|
||||
return;
|
||||
while ((ch = *cp)) {
|
||||
if (ch >= 0x100)
|
||||
/* FIXME */
|
||||
continue;
|
||||
if (cp != buf)
|
||||
synth_printf(" %s ", delay_str[spk_spell_delay]);
|
||||
if (IS_CHAR(ch, B_CAP)) {
|
||||
/* FIXME: Non-latin1 considered as lower case */
|
||||
if (ch < 0x100 && IS_CHAR(ch, B_CAP)) {
|
||||
str_cap = spk_str_caps_start;
|
||||
if (*spk_str_caps_stop)
|
||||
spk_pitch_shift++;
|
||||
|
@ -734,18 +731,21 @@ static void spell_word(struct vc_data *vc)
|
|||
synth_printf("%s", str_cap);
|
||||
last_cap = str_cap;
|
||||
}
|
||||
if (this_speakup_key == SPELL_PHONETIC &&
|
||||
if (ch >= 0x100 || (direct && direct->u.n.value)) {
|
||||
synth_putwc_s(ch);
|
||||
} else if (this_speakup_key == SPELL_PHONETIC &&
|
||||
ch <= 0x7f && isalpha(ch)) {
|
||||
ch &= 0x1f;
|
||||
cp1 = phonetic[--ch];
|
||||
synth_printf("%s", cp1);
|
||||
} else {
|
||||
cp1 = spk_characters[ch];
|
||||
if (*cp1 == '^') {
|
||||
synth_printf("%s", spk_msg_get(MSG_CTRL));
|
||||
cp1++;
|
||||
}
|
||||
}
|
||||
synth_printf("%s", cp1);
|
||||
}
|
||||
cp++;
|
||||
}
|
||||
if (str_cap != spk_str_caps_stop)
|
||||
|
|
Loading…
Reference in a new issue