* [PATCHv2 0/2] default driver params and phonetic spelling while arrowing
@ 2022-11-15 9:48 Mushahid Hussain
2022-11-15 9:48 ` [PATCHv2 1/2] accessibility: speakup: Specify spk_vars among module parameters Mushahid Hussain
2022-11-15 9:48 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain
0 siblings, 2 replies; 5+ messages in thread
From: Mushahid Hussain @ 2022-11-15 9:48 UTC (permalink / raw)
To: samuel.thibault; +Cc: okash.khawaja, speakup, linux-kernel, Mushahid Hussain
This patch series allows specifying default driver parameters for speakup
as module parameters, and includes an additional parameter, cur_phonetic.
cur_phonetic is necessary to introduce an enhancement which allows
speakup to speak letters phonetically, when a user arrows a
word letter by letter. This functionality can be enabled
by setting /sys/speakup/cur_phonetic to 1.
When cur_phonetic is set to 1, speakup will speak letters as
phonetically when arrowing over a word.
This does not affect when a user is typing but only affects when a user
is arrowing over a word.
When cur_phonetic is set to 0, speakup will work as before, it will
speak letters normally when arrowing over them.
When a user does not set /sys/speakup/cur_phonetic to any value, the
default value is 0.
Only accepted values for /sys/speakup/cur_phonetic are 1 and 0.
1. It indexes spk_vars by an enum and allows specifying spk_vars
as module parameters.
2. It introduces a new variable cur_phonetic in spk_vars,
allows specifying it as a module parameter as well. It also makes
cur_phonetic accessible in sysfs at /sys/speakup/ as all other
spk_vars. cur_phonetic can be used by users to enable phonetic
annuncement of letters when navigated by the cursor.
It also documents the cur_phonetic in
/Documentation/ABI/stable/sysfs-driver-speakup.
since V1:
- removed unnecessary lines
Mushahid Hussain (2):
accessibility: speakup: Specify spk_vars among module parameters
accessibility: speakup: phonetic spelling while arrowing letter by
letter
Documentation/ABI/stable/sysfs-driver-speakup | 9 +++
drivers/accessibility/speakup/kobjects.c | 3 +
drivers/accessibility/speakup/main.c | 72 +++++++++++++++----
drivers/accessibility/speakup/speakup.h | 1 +
drivers/accessibility/speakup/spk_types.h | 2 +-
drivers/accessibility/speakup/varhandlers.c | 1 +
6 files changed, 72 insertions(+), 16 deletions(-)
--
2.38.1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCHv2 1/2] accessibility: speakup: Specify spk_vars among module parameters 2022-11-15 9:48 [PATCHv2 0/2] default driver params and phonetic spelling while arrowing Mushahid Hussain @ 2022-11-15 9:48 ` Mushahid Hussain 2022-11-15 9:48 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain 1 sibling, 0 replies; 5+ messages in thread From: Mushahid Hussain @ 2022-11-15 9:48 UTC (permalink / raw) To: samuel.thibault; +Cc: okash.khawaja, speakup, linux-kernel, Mushahid Hussain This is an enhancement which allows setting default variables for speakup module at the boot rather than setting the sys variables after the boot. Signed-off-by: Mushahid Hussain <mushi.shar@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> --- drivers/accessibility/speakup/main.c | 60 ++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index f52265293482..2e6e0649fe90 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -1268,20 +1268,28 @@ int spk_set_key_info(const u_char *key_info, u_char *k_buffer) return 0; } -static struct var_t spk_vars[] = { +enum spk_vars_id { + BELL_POS_ID = 0, SPELL_DELAY_ID, ATTRIB_BLEEP_ID, + BLEEPS_ID, BLEEP_TIME_ID, PUNC_LEVEL_ID, + READING_PUNC_ID, CURSOR_TIME_ID, SAY_CONTROL_ID, + SAY_WORD_CTL_ID, NO_INTERRUPT_ID, KEY_ECHO_ID, + V_LAST_VAR_ID, NB_ID +}; + +static struct var_t spk_vars[NB_ID] = { /* bell must be first to set high limit */ - {BELL_POS, .u.n = {NULL, 0, 0, 0, 0, 0, NULL} }, - {SPELL_DELAY, .u.n = {NULL, 0, 0, 4, 0, 0, NULL} }, - {ATTRIB_BLEEP, .u.n = {NULL, 1, 0, 3, 0, 0, NULL} }, - {BLEEPS, .u.n = {NULL, 3, 0, 3, 0, 0, NULL} }, - {BLEEP_TIME, .u.n = {NULL, 30, 1, 200, 0, 0, NULL} }, - {PUNC_LEVEL, .u.n = {NULL, 1, 0, 4, 0, 0, NULL} }, - {READING_PUNC, .u.n = {NULL, 1, 0, 4, 0, 0, NULL} }, - {CURSOR_TIME, .u.n = {NULL, 120, 50, 600, 0, 0, NULL} }, - {SAY_CONTROL, TOGGLE_0}, - {SAY_WORD_CTL, TOGGLE_0}, - {NO_INTERRUPT, TOGGLE_0}, - {KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL} }, + [BELL_POS_ID] = { BELL_POS, .u.n = {NULL, 0, 0, 0, 0, 0, NULL} }, + [SPELL_DELAY_ID] = { SPELL_DELAY, .u.n = {NULL, 0, 0, 4, 0, 0, NULL} }, + [ATTRIB_BLEEP_ID] = { ATTRIB_BLEEP, .u.n = {NULL, 1, 0, 3, 0, 0, NULL} }, + [BLEEPS_ID] = { BLEEPS, .u.n = {NULL, 3, 0, 3, 0, 0, NULL} }, + [BLEEP_TIME_ID] = { BLEEP_TIME, .u.n = {NULL, 30, 1, 200, 0, 0, NULL} }, + [PUNC_LEVEL_ID] = { PUNC_LEVEL, .u.n = {NULL, 1, 0, 4, 0, 0, NULL} }, + [READING_PUNC_ID] = { READING_PUNC, .u.n = {NULL, 1, 0, 4, 0, 0, NULL} }, + [CURSOR_TIME_ID] = { CURSOR_TIME, .u.n = {NULL, 120, 50, 600, 0, 0, NULL} }, + [SAY_CONTROL_ID] { SAY_CONTROL, TOGGLE_0}, + [SAY_WORD_CTL_ID] = {SAY_WORD_CTL, TOGGLE_0}, + [NO_INTERRUPT_ID] = { NO_INTERRUPT, TOGGLE_0}, + [KEY_ECHO_ID] = { KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL} }, V_LAST_VAR }; @@ -2453,5 +2461,31 @@ static int __init speakup_init(void) return err; } +module_param_named(bell_pos, spk_vars[BELL_POS_ID].u.n.default_val, int, 0444); +module_param_named(spell_delay, spk_vars[SPELL_DELAY_ID].u.n.default_val, int, 0444); +module_param_named(attrib_bleep, spk_vars[ATTRIB_BLEEP_ID].u.n.default_val, int, 0444); +module_param_named(bleeps, spk_vars[BLEEPS_ID].u.n.default_val, int, 0444); +module_param_named(bleep_time, spk_vars[BLEEP_TIME_ID].u.n.default_val, int, 0444); +module_param_named(punc_level, spk_vars[PUNC_LEVEL_ID].u.n.default_val, int, 0444); +module_param_named(reading_punc, spk_vars[READING_PUNC_ID].u.n.default_val, int, 0444); +module_param_named(cursor_time, spk_vars[CURSOR_TIME_ID].u.n.default_val, int, 0444); +module_param_named(say_control, spk_vars[SAY_CONTROL_ID].u.n.default_val, int, 0444); +module_param_named(say_word_ctl, spk_vars[SAY_WORD_CTL_ID].u.n.default_val, int, 0444); +module_param_named(no_interrupt, spk_vars[NO_INTERRUPT_ID].u.n.default_val, int, 0444); +module_param_named(key_echo, spk_vars[KEY_ECHO_ID].u.n.default_val, int, 0444); + +MODULE_PARM_DESC(bell_pos, "This works much like a typewriter bell. If for example 72 is echoed to bell_pos, it will beep the PC speaker when typing on a line past character 72."); +MODULE_PARM_DESC(spell_delay, "This controls how fast a word is spelled when speakup's spell word review command is pressed."); +MODULE_PARM_DESC(attrib_bleep, "Beeps the PC speaker when there is an attribute change such as background color when using speakup review commands. One = on, zero = off."); +MODULE_PARM_DESC(bleeps, "This controls whether one hears beeps through the PC speaker when using speakup review commands."); +MODULE_PARM_DESC(bleep_time, "This controls the duration of the PC speaker beeps speakup produces."); +MODULE_PARM_DESC(punc_level, "Controls the level of punctuation spoken as the screen is displayed, not reviewed."); +MODULE_PARM_DESC(reading_punc, "It controls the level of punctuation when reviewing the screen with speakup's screen review commands."); +MODULE_PARM_DESC(cursor_time, "This controls cursor delay when using arrow keys."); +MODULE_PARM_DESC(say_control, "This controls if speakup speaks shift, alt and control when those keys are pressed or not."); +MODULE_PARM_DESC(say_word_ctl, "Sets thw say_word_ctl on load."); +MODULE_PARM_DESC(no_interrupt, "Controls if typing interrupts output from speakup."); +MODULE_PARM_DESC(key_echo, "Controls if speakup speaks keys when they are typed. One = on zero = off or don't echo keys."); + module_init(speakup_init); module_exit(speakup_exit); -- 2.38.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter 2022-11-15 9:48 [PATCHv2 0/2] default driver params and phonetic spelling while arrowing Mushahid Hussain 2022-11-15 9:48 ` [PATCHv2 1/2] accessibility: speakup: Specify spk_vars among module parameters Mushahid Hussain @ 2022-11-15 9:48 ` Mushahid Hussain 2022-11-15 10:00 ` Samuel Thibault 1 sibling, 1 reply; 5+ messages in thread From: Mushahid Hussain @ 2022-11-15 9:48 UTC (permalink / raw) To: samuel.thibault; +Cc: okash.khawaja, speakup, linux-kernel, Mushahid Hussain This patch includes an enhancement requested frequently on the mailing list.[1][2] It adds a variable, cur_phonetic in the spk_vars, which can be set as a module parameter, as well as in /sys/speakup/cur_phonetic. This patch also documents cur_phonetic as a sysfs attribute in sysfs-driver-speakup. When cur_phonetic=1, it causes speakup to speak letters phonetically if paused on the character while arrowing through a word. When a user does not set cur_phonetic to any value, the default value for it would be 0. [1]: https://github.com/linux-speakup/speakup/issues/6 [2]: https://github.com/linux-speakup/speakup/issues/5 since V1: - removed unnecessary lines Signed-off-by: Mushahid Hussain<mushi.shar@gmail.com> --- Documentation/ABI/stable/sysfs-driver-speakup | 9 +++++++++ drivers/accessibility/speakup/kobjects.c | 3 +++ drivers/accessibility/speakup/main.c | 14 +++++++++++--- drivers/accessibility/speakup/speakup.h | 1 + drivers/accessibility/speakup/spk_types.h | 2 +- drivers/accessibility/speakup/varhandlers.c | 1 + 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Documentation/ABI/stable/sysfs-driver-speakup b/Documentation/ABI/stable/sysfs-driver-speakup index dc2a6ba1674b..bcb6831aa114 100644 --- a/Documentation/ABI/stable/sysfs-driver-speakup +++ b/Documentation/ABI/stable/sysfs-driver-speakup @@ -35,6 +35,15 @@ Description: This controls cursor delay when using arrow keys. When a characters. Set this to a higher value to adjust for the delay and better synchronisation between cursor position and speech. +What: /sys/accessibility/speakup/cur_phonetic +KernelVersion: 6.2 +Contact: speakup@linux-speakup.org +Description: This allows speakup to speak letters phoneticaly when arrowing through + a word letter by letter. This doesn't affect the spelling when typing + the characters. When cur_phonetic=1, speakup will speak characters + phoneticaly when arrowing over a letter. When cur_phonetic=0, speakup + will speak letters as normally. + What: /sys/accessibility/speakup/delimiters KernelVersion: 2.6 Contact: speakup@linux-speakup.org diff --git a/drivers/accessibility/speakup/kobjects.c b/drivers/accessibility/speakup/kobjects.c index 41ae24ab5d08..a7522d409802 100644 --- a/drivers/accessibility/speakup/kobjects.c +++ b/drivers/accessibility/speakup/kobjects.c @@ -914,6 +914,8 @@ static struct kobj_attribute say_word_ctl_attribute = __ATTR(say_word_ctl, 0644, spk_var_show, spk_var_store); static struct kobj_attribute spell_delay_attribute = __ATTR(spell_delay, 0644, spk_var_show, spk_var_store); +static struct kobj_attribute cur_phonetic_attribute = + __ATTR(cur_phonetic, 0644, spk_var_show, spk_var_store); /* * These attributes are i18n related. @@ -967,6 +969,7 @@ static struct attribute *main_attrs[] = { &say_control_attribute.attr, &say_word_ctl_attribute.attr, &spell_delay_attribute.attr, + &cur_phonetic_attribute.attr, NULL, }; diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index 2e6e0649fe90..987fd29b6786 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -65,6 +65,7 @@ int spk_key_echo, spk_say_word_ctl; int spk_say_ctrl, spk_bell_pos; short spk_punc_mask; int spk_punc_level, spk_reading_punc; +int spk_cur_phonetic; char spk_str_caps_start[MAXVARLEN + 1] = "\0"; char spk_str_caps_stop[MAXVARLEN + 1] = "\0"; char spk_str_pause[MAXVARLEN + 1] = "\0"; @@ -1273,7 +1274,7 @@ enum spk_vars_id { BLEEPS_ID, BLEEP_TIME_ID, PUNC_LEVEL_ID, READING_PUNC_ID, CURSOR_TIME_ID, SAY_CONTROL_ID, SAY_WORD_CTL_ID, NO_INTERRUPT_ID, KEY_ECHO_ID, - V_LAST_VAR_ID, NB_ID + CUR_PHONETIC_ID, V_LAST_VAR_ID, NB_ID }; static struct var_t spk_vars[NB_ID] = { @@ -1290,6 +1291,7 @@ static struct var_t spk_vars[NB_ID] = { [SAY_WORD_CTL_ID] = {SAY_WORD_CTL, TOGGLE_0}, [NO_INTERRUPT_ID] = { NO_INTERRUPT, TOGGLE_0}, [KEY_ECHO_ID] = { KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL} }, + [CUR_PHONETIC_ID] = { CUR_PHONETIC, .u.n = {NULL, 0, 0, 1, 0, 0, NULL} }, V_LAST_VAR }; @@ -1720,8 +1722,12 @@ static void cursor_done(struct timer_list *unused) speakup_win_say(vc); else if (is_cursor == 1 || is_cursor == 4) say_line_from_to(vc, 0, vc->vc_cols, 0); - else - say_char(vc); + else { + if (spk_cur_phonetic == 1) + say_phonetic_char(vc); + else + say_char(vc); + } spk_keydown = 0; is_cursor = 0; out: @@ -2473,6 +2479,7 @@ module_param_named(say_control, spk_vars[SAY_CONTROL_ID].u.n.default_val, int, 0 module_param_named(say_word_ctl, spk_vars[SAY_WORD_CTL_ID].u.n.default_val, int, 0444); module_param_named(no_interrupt, spk_vars[NO_INTERRUPT_ID].u.n.default_val, int, 0444); module_param_named(key_echo, spk_vars[KEY_ECHO_ID].u.n.default_val, int, 0444); +module_param_named(cur_phonetic, spk_vars[CUR_PHONETIC_ID].u.n.default_val, int, 0444); MODULE_PARM_DESC(bell_pos, "This works much like a typewriter bell. If for example 72 is echoed to bell_pos, it will beep the PC speaker when typing on a line past character 72."); MODULE_PARM_DESC(spell_delay, "This controls how fast a word is spelled when speakup's spell word review command is pressed."); @@ -2486,6 +2493,7 @@ MODULE_PARM_DESC(say_control, "This controls if speakup speaks shift, alt and co MODULE_PARM_DESC(say_word_ctl, "Sets thw say_word_ctl on load."); MODULE_PARM_DESC(no_interrupt, "Controls if typing interrupts output from speakup."); MODULE_PARM_DESC(key_echo, "Controls if speakup speaks keys when they are typed. One = on zero = off or don't echo keys."); +MODULE_PARM_DESC(cur_phonetic, "Controls if speakup speaks letters phonetically during navigation. One = on zero = off or don't speak phonetically."); module_init(speakup_init); module_exit(speakup_exit); diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibility/speakup/speakup.h index 33594f5a7983..364fde99749e 100644 --- a/drivers/accessibility/speakup/speakup.h +++ b/drivers/accessibility/speakup/speakup.h @@ -105,6 +105,7 @@ extern int spk_no_intr, spk_say_ctrl, spk_say_word_ctl, spk_punc_level; extern int spk_reading_punc, spk_attrib_bleep, spk_bleeps; extern int spk_bleep_time, spk_bell_pos; extern int spk_spell_delay, spk_key_echo; +extern int spk_cur_phonetic; extern short spk_punc_mask; extern short spk_pitch_shift, synth_flags; extern bool spk_quiet_boot; diff --git a/drivers/accessibility/speakup/spk_types.h b/drivers/accessibility/speakup/spk_types.h index 3a14d39bf896..08011518a28a 100644 --- a/drivers/accessibility/speakup/spk_types.h +++ b/drivers/accessibility/speakup/spk_types.h @@ -49,7 +49,7 @@ enum var_id_t { RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT, PAUSE, CAPS_START, CAPS_STOP, CHARTAB, INFLECTION, FLUSH, - MAXVARS + CUR_PHONETIC, MAXVARS }; typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch, diff --git a/drivers/accessibility/speakup/varhandlers.c b/drivers/accessibility/speakup/varhandlers.c index e1c9f42e39f0..462f8d879053 100644 --- a/drivers/accessibility/speakup/varhandlers.c +++ b/drivers/accessibility/speakup/varhandlers.c @@ -48,6 +48,7 @@ static struct st_var_header var_headers[] = { { "chartab", CHARTAB, VAR_PROC, NULL, NULL }, { "direct", DIRECT, VAR_NUM, NULL, NULL }, { "pause", PAUSE, VAR_STRING, spk_str_pause, NULL }, + { "cur_phonetic", CUR_PHONETIC, VAR_NUM, &spk_cur_phonetic, NULL }, }; static struct st_var_header *var_ptrs[MAXVARS] = { NULL, NULL, NULL }; -- 2.38.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter 2022-11-15 9:48 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain @ 2022-11-15 10:00 ` Samuel Thibault 0 siblings, 0 replies; 5+ messages in thread From: Samuel Thibault @ 2022-11-15 10:00 UTC (permalink / raw) To: Mushahid Hussain; +Cc: okash.khawaja, speakup, linux-kernel Mushahid Hussain, le mar. 15 nov. 2022 14:48:12 +0500, a ecrit: > This patch includes an enhancement requested frequently on the mailing > list.[1][2] It adds a variable, cur_phonetic in the spk_vars, which can > be set as a module parameter, as well as in /sys/speakup/cur_phonetic. > This patch also documents cur_phonetic as a sysfs attribute in > sysfs-driver-speakup. > > When cur_phonetic=1, it causes speakup to speak letters phonetically if > paused on the character while arrowing through a word. > > When a user does not set cur_phonetic to any value, the default value > for it would be 0. > > [1]: https://github.com/linux-speakup/speakup/issues/6 > [2]: https://github.com/linux-speakup/speakup/issues/5 > > since V1: > - removed unnecessary lines > > Signed-off-by: Mushahid Hussain<mushi.shar@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> > --- > Documentation/ABI/stable/sysfs-driver-speakup | 9 +++++++++ > drivers/accessibility/speakup/kobjects.c | 3 +++ > drivers/accessibility/speakup/main.c | 14 +++++++++++--- > drivers/accessibility/speakup/speakup.h | 1 + > drivers/accessibility/speakup/spk_types.h | 2 +- > drivers/accessibility/speakup/varhandlers.c | 1 + > 6 files changed, 26 insertions(+), 4 deletions(-) > > diff --git a/Documentation/ABI/stable/sysfs-driver-speakup b/Documentation/ABI/stable/sysfs-driver-speakup > index dc2a6ba1674b..bcb6831aa114 100644 > --- a/Documentation/ABI/stable/sysfs-driver-speakup > +++ b/Documentation/ABI/stable/sysfs-driver-speakup > @@ -35,6 +35,15 @@ Description: This controls cursor delay when using arrow keys. When a > characters. Set this to a higher value to adjust for the delay > and better synchronisation between cursor position and speech. > > +What: /sys/accessibility/speakup/cur_phonetic > +KernelVersion: 6.2 > +Contact: speakup@linux-speakup.org > +Description: This allows speakup to speak letters phoneticaly when arrowing through > + a word letter by letter. This doesn't affect the spelling when typing > + the characters. When cur_phonetic=1, speakup will speak characters > + phoneticaly when arrowing over a letter. When cur_phonetic=0, speakup > + will speak letters as normally. > + > What: /sys/accessibility/speakup/delimiters > KernelVersion: 2.6 > Contact: speakup@linux-speakup.org > diff --git a/drivers/accessibility/speakup/kobjects.c b/drivers/accessibility/speakup/kobjects.c > index 41ae24ab5d08..a7522d409802 100644 > --- a/drivers/accessibility/speakup/kobjects.c > +++ b/drivers/accessibility/speakup/kobjects.c > @@ -914,6 +914,8 @@ static struct kobj_attribute say_word_ctl_attribute = > __ATTR(say_word_ctl, 0644, spk_var_show, spk_var_store); > static struct kobj_attribute spell_delay_attribute = > __ATTR(spell_delay, 0644, spk_var_show, spk_var_store); > +static struct kobj_attribute cur_phonetic_attribute = > + __ATTR(cur_phonetic, 0644, spk_var_show, spk_var_store); > > /* > * These attributes are i18n related. > @@ -967,6 +969,7 @@ static struct attribute *main_attrs[] = { > &say_control_attribute.attr, > &say_word_ctl_attribute.attr, > &spell_delay_attribute.attr, > + &cur_phonetic_attribute.attr, > NULL, > }; > > diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c > index 2e6e0649fe90..987fd29b6786 100644 > --- a/drivers/accessibility/speakup/main.c > +++ b/drivers/accessibility/speakup/main.c > @@ -65,6 +65,7 @@ int spk_key_echo, spk_say_word_ctl; > int spk_say_ctrl, spk_bell_pos; > short spk_punc_mask; > int spk_punc_level, spk_reading_punc; > +int spk_cur_phonetic; > char spk_str_caps_start[MAXVARLEN + 1] = "\0"; > char spk_str_caps_stop[MAXVARLEN + 1] = "\0"; > char spk_str_pause[MAXVARLEN + 1] = "\0"; > @@ -1273,7 +1274,7 @@ enum spk_vars_id { > BLEEPS_ID, BLEEP_TIME_ID, PUNC_LEVEL_ID, > READING_PUNC_ID, CURSOR_TIME_ID, SAY_CONTROL_ID, > SAY_WORD_CTL_ID, NO_INTERRUPT_ID, KEY_ECHO_ID, > - V_LAST_VAR_ID, NB_ID > + CUR_PHONETIC_ID, V_LAST_VAR_ID, NB_ID > }; > > static struct var_t spk_vars[NB_ID] = { > @@ -1290,6 +1291,7 @@ static struct var_t spk_vars[NB_ID] = { > [SAY_WORD_CTL_ID] = {SAY_WORD_CTL, TOGGLE_0}, > [NO_INTERRUPT_ID] = { NO_INTERRUPT, TOGGLE_0}, > [KEY_ECHO_ID] = { KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL} }, > + [CUR_PHONETIC_ID] = { CUR_PHONETIC, .u.n = {NULL, 0, 0, 1, 0, 0, NULL} }, > V_LAST_VAR > }; > > @@ -1720,8 +1722,12 @@ static void cursor_done(struct timer_list *unused) > speakup_win_say(vc); > else if (is_cursor == 1 || is_cursor == 4) > say_line_from_to(vc, 0, vc->vc_cols, 0); > - else > - say_char(vc); > + else { > + if (spk_cur_phonetic == 1) > + say_phonetic_char(vc); > + else > + say_char(vc); > + } > spk_keydown = 0; > is_cursor = 0; > out: > @@ -2473,6 +2479,7 @@ module_param_named(say_control, spk_vars[SAY_CONTROL_ID].u.n.default_val, int, 0 > module_param_named(say_word_ctl, spk_vars[SAY_WORD_CTL_ID].u.n.default_val, int, 0444); > module_param_named(no_interrupt, spk_vars[NO_INTERRUPT_ID].u.n.default_val, int, 0444); > module_param_named(key_echo, spk_vars[KEY_ECHO_ID].u.n.default_val, int, 0444); > +module_param_named(cur_phonetic, spk_vars[CUR_PHONETIC_ID].u.n.default_val, int, 0444); > > MODULE_PARM_DESC(bell_pos, "This works much like a typewriter bell. If for example 72 is echoed to bell_pos, it will beep the PC speaker when typing on a line past character 72."); > MODULE_PARM_DESC(spell_delay, "This controls how fast a word is spelled when speakup's spell word review command is pressed."); > @@ -2486,6 +2493,7 @@ MODULE_PARM_DESC(say_control, "This controls if speakup speaks shift, alt and co > MODULE_PARM_DESC(say_word_ctl, "Sets thw say_word_ctl on load."); > MODULE_PARM_DESC(no_interrupt, "Controls if typing interrupts output from speakup."); > MODULE_PARM_DESC(key_echo, "Controls if speakup speaks keys when they are typed. One = on zero = off or don't echo keys."); > +MODULE_PARM_DESC(cur_phonetic, "Controls if speakup speaks letters phonetically during navigation. One = on zero = off or don't speak phonetically."); > > module_init(speakup_init); > module_exit(speakup_exit); > diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibility/speakup/speakup.h > index 33594f5a7983..364fde99749e 100644 > --- a/drivers/accessibility/speakup/speakup.h > +++ b/drivers/accessibility/speakup/speakup.h > @@ -105,6 +105,7 @@ extern int spk_no_intr, spk_say_ctrl, spk_say_word_ctl, spk_punc_level; > extern int spk_reading_punc, spk_attrib_bleep, spk_bleeps; > extern int spk_bleep_time, spk_bell_pos; > extern int spk_spell_delay, spk_key_echo; > +extern int spk_cur_phonetic; > extern short spk_punc_mask; > extern short spk_pitch_shift, synth_flags; > extern bool spk_quiet_boot; > diff --git a/drivers/accessibility/speakup/spk_types.h b/drivers/accessibility/speakup/spk_types.h > index 3a14d39bf896..08011518a28a 100644 > --- a/drivers/accessibility/speakup/spk_types.h > +++ b/drivers/accessibility/speakup/spk_types.h > @@ -49,7 +49,7 @@ enum var_id_t { > RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, > DIRECT, PAUSE, > CAPS_START, CAPS_STOP, CHARTAB, INFLECTION, FLUSH, > - MAXVARS > + CUR_PHONETIC, MAXVARS > }; > > typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch, > diff --git a/drivers/accessibility/speakup/varhandlers.c b/drivers/accessibility/speakup/varhandlers.c > index e1c9f42e39f0..462f8d879053 100644 > --- a/drivers/accessibility/speakup/varhandlers.c > +++ b/drivers/accessibility/speakup/varhandlers.c > @@ -48,6 +48,7 @@ static struct st_var_header var_headers[] = { > { "chartab", CHARTAB, VAR_PROC, NULL, NULL }, > { "direct", DIRECT, VAR_NUM, NULL, NULL }, > { "pause", PAUSE, VAR_STRING, spk_str_pause, NULL }, > + { "cur_phonetic", CUR_PHONETIC, VAR_NUM, &spk_cur_phonetic, NULL }, > }; > > static struct st_var_header *var_ptrs[MAXVARS] = { NULL, NULL, NULL }; > -- > 2.38.1 > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria. ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCHv2 0/2] default driver params and phonetic spelling while arrowing
@ 2022-11-15 10:05 Mushahid Hussain
2022-11-15 10:05 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain
0 siblings, 1 reply; 5+ messages in thread
From: Mushahid Hussain @ 2022-11-15 10:05 UTC (permalink / raw)
To: gregkh; +Cc: speakup, linux-kernel, Mushahid Hussain
This patch series allows specifying default driver parameters for speakup
as module parameters, and includes an additional parameter, cur_phonetic.
cur_phonetic is necessary to introduce an enhancement which allows
speakup to speak letters phonetically, when a user arrows a
word letter by letter. This functionality can be enabled
by setting /sys/speakup/cur_phonetic to 1.
When cur_phonetic is set to 1, speakup will speak letters as
phonetically when arrowing over a word.
This does not affect when a user is typing but only affects when a user
is arrowing over a word.
When cur_phonetic is set to 0, speakup will work as before, it will
speak letters normally when arrowing over them.
When a user does not set /sys/speakup/cur_phonetic to any value, the
default value is 0.
Only accepted values for /sys/speakup/cur_phonetic are 1 and 0.
1. It indexes spk_vars by an enum and allows specifying spk_vars
as module parameters.
2. It introduces a new variable cur_phonetic in spk_vars,
allows specifying it as a module parameter as well. It also makes
cur_phonetic accessible in sysfs at /sys/speakup/ as all other
spk_vars. cur_phonetic can be used by users to enable phonetic
annuncement of letters when navigated by the cursor.
It also documents the cur_phonetic in
/Documentation/ABI/stable/sysfs-driver-speakup.
since V1:
- removed unnecessary lines
Mushahid Hussain (2):
accessibility: speakup: Specify spk_vars among module parameters
accessibility: speakup: phonetic spelling while arrowing letter by
letter
Documentation/ABI/stable/sysfs-driver-speakup | 9 +++
drivers/accessibility/speakup/kobjects.c | 3 +
drivers/accessibility/speakup/main.c | 72 +++++++++++++++----
drivers/accessibility/speakup/speakup.h | 1 +
drivers/accessibility/speakup/spk_types.h | 2 +-
drivers/accessibility/speakup/varhandlers.c | 1 +
6 files changed, 72 insertions(+), 16 deletions(-)
--
2.38.1
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter 2022-11-15 10:05 [PATCHv2 0/2] default driver params and phonetic spelling while arrowing Mushahid Hussain @ 2022-11-15 10:05 ` Mushahid Hussain 0 siblings, 0 replies; 5+ messages in thread From: Mushahid Hussain @ 2022-11-15 10:05 UTC (permalink / raw) To: gregkh; +Cc: speakup, linux-kernel, Mushahid Hussain, Samuel Thibault This patch includes an enhancement requested frequently on the mailing list.[1][2] It adds a variable, cur_phonetic in the spk_vars, which can be set as a module parameter, as well as in /sys/speakup/cur_phonetic. This patch also documents cur_phonetic as a sysfs attribute in sysfs-driver-speakup. When cur_phonetic=1, it causes speakup to speak letters phonetically if paused on the character while arrowing through a word. When a user does not set cur_phonetic to any value, the default value for it would be 0. [1]: https://github.com/linux-speakup/speakup/issues/6 [2]: https://github.com/linux-speakup/speakup/issues/5 since V1: - removed unnecessary lines Signed-off-by: Mushahid Hussain<mushi.shar@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> --- Documentation/ABI/stable/sysfs-driver-speakup | 9 +++++++++ drivers/accessibility/speakup/kobjects.c | 3 +++ drivers/accessibility/speakup/main.c | 14 +++++++++++--- drivers/accessibility/speakup/speakup.h | 1 + drivers/accessibility/speakup/spk_types.h | 2 +- drivers/accessibility/speakup/varhandlers.c | 1 + 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Documentation/ABI/stable/sysfs-driver-speakup b/Documentation/ABI/stable/sysfs-driver-speakup index dc2a6ba1674b..bcb6831aa114 100644 --- a/Documentation/ABI/stable/sysfs-driver-speakup +++ b/Documentation/ABI/stable/sysfs-driver-speakup @@ -35,6 +35,15 @@ Description: This controls cursor delay when using arrow keys. When a characters. Set this to a higher value to adjust for the delay and better synchronisation between cursor position and speech. +What: /sys/accessibility/speakup/cur_phonetic +KernelVersion: 6.2 +Contact: speakup@linux-speakup.org +Description: This allows speakup to speak letters phoneticaly when arrowing through + a word letter by letter. This doesn't affect the spelling when typing + the characters. When cur_phonetic=1, speakup will speak characters + phoneticaly when arrowing over a letter. When cur_phonetic=0, speakup + will speak letters as normally. + What: /sys/accessibility/speakup/delimiters KernelVersion: 2.6 Contact: speakup@linux-speakup.org diff --git a/drivers/accessibility/speakup/kobjects.c b/drivers/accessibility/speakup/kobjects.c index 41ae24ab5d08..a7522d409802 100644 --- a/drivers/accessibility/speakup/kobjects.c +++ b/drivers/accessibility/speakup/kobjects.c @@ -914,6 +914,8 @@ static struct kobj_attribute say_word_ctl_attribute = __ATTR(say_word_ctl, 0644, spk_var_show, spk_var_store); static struct kobj_attribute spell_delay_attribute = __ATTR(spell_delay, 0644, spk_var_show, spk_var_store); +static struct kobj_attribute cur_phonetic_attribute = + __ATTR(cur_phonetic, 0644, spk_var_show, spk_var_store); /* * These attributes are i18n related. @@ -967,6 +969,7 @@ static struct attribute *main_attrs[] = { &say_control_attribute.attr, &say_word_ctl_attribute.attr, &spell_delay_attribute.attr, + &cur_phonetic_attribute.attr, NULL, }; diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index 2e6e0649fe90..987fd29b6786 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -65,6 +65,7 @@ int spk_key_echo, spk_say_word_ctl; int spk_say_ctrl, spk_bell_pos; short spk_punc_mask; int spk_punc_level, spk_reading_punc; +int spk_cur_phonetic; char spk_str_caps_start[MAXVARLEN + 1] = "\0"; char spk_str_caps_stop[MAXVARLEN + 1] = "\0"; char spk_str_pause[MAXVARLEN + 1] = "\0"; @@ -1273,7 +1274,7 @@ enum spk_vars_id { BLEEPS_ID, BLEEP_TIME_ID, PUNC_LEVEL_ID, READING_PUNC_ID, CURSOR_TIME_ID, SAY_CONTROL_ID, SAY_WORD_CTL_ID, NO_INTERRUPT_ID, KEY_ECHO_ID, - V_LAST_VAR_ID, NB_ID + CUR_PHONETIC_ID, V_LAST_VAR_ID, NB_ID }; static struct var_t spk_vars[NB_ID] = { @@ -1290,6 +1291,7 @@ static struct var_t spk_vars[NB_ID] = { [SAY_WORD_CTL_ID] = {SAY_WORD_CTL, TOGGLE_0}, [NO_INTERRUPT_ID] = { NO_INTERRUPT, TOGGLE_0}, [KEY_ECHO_ID] = { KEY_ECHO, .u.n = {NULL, 1, 0, 2, 0, 0, NULL} }, + [CUR_PHONETIC_ID] = { CUR_PHONETIC, .u.n = {NULL, 0, 0, 1, 0, 0, NULL} }, V_LAST_VAR }; @@ -1720,8 +1722,12 @@ static void cursor_done(struct timer_list *unused) speakup_win_say(vc); else if (is_cursor == 1 || is_cursor == 4) say_line_from_to(vc, 0, vc->vc_cols, 0); - else - say_char(vc); + else { + if (spk_cur_phonetic == 1) + say_phonetic_char(vc); + else + say_char(vc); + } spk_keydown = 0; is_cursor = 0; out: @@ -2473,6 +2479,7 @@ module_param_named(say_control, spk_vars[SAY_CONTROL_ID].u.n.default_val, int, 0 module_param_named(say_word_ctl, spk_vars[SAY_WORD_CTL_ID].u.n.default_val, int, 0444); module_param_named(no_interrupt, spk_vars[NO_INTERRUPT_ID].u.n.default_val, int, 0444); module_param_named(key_echo, spk_vars[KEY_ECHO_ID].u.n.default_val, int, 0444); +module_param_named(cur_phonetic, spk_vars[CUR_PHONETIC_ID].u.n.default_val, int, 0444); MODULE_PARM_DESC(bell_pos, "This works much like a typewriter bell. If for example 72 is echoed to bell_pos, it will beep the PC speaker when typing on a line past character 72."); MODULE_PARM_DESC(spell_delay, "This controls how fast a word is spelled when speakup's spell word review command is pressed."); @@ -2486,6 +2493,7 @@ MODULE_PARM_DESC(say_control, "This controls if speakup speaks shift, alt and co MODULE_PARM_DESC(say_word_ctl, "Sets thw say_word_ctl on load."); MODULE_PARM_DESC(no_interrupt, "Controls if typing interrupts output from speakup."); MODULE_PARM_DESC(key_echo, "Controls if speakup speaks keys when they are typed. One = on zero = off or don't echo keys."); +MODULE_PARM_DESC(cur_phonetic, "Controls if speakup speaks letters phonetically during navigation. One = on zero = off or don't speak phonetically."); module_init(speakup_init); module_exit(speakup_exit); diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibility/speakup/speakup.h index 33594f5a7983..364fde99749e 100644 --- a/drivers/accessibility/speakup/speakup.h +++ b/drivers/accessibility/speakup/speakup.h @@ -105,6 +105,7 @@ extern int spk_no_intr, spk_say_ctrl, spk_say_word_ctl, spk_punc_level; extern int spk_reading_punc, spk_attrib_bleep, spk_bleeps; extern int spk_bleep_time, spk_bell_pos; extern int spk_spell_delay, spk_key_echo; +extern int spk_cur_phonetic; extern short spk_punc_mask; extern short spk_pitch_shift, synth_flags; extern bool spk_quiet_boot; diff --git a/drivers/accessibility/speakup/spk_types.h b/drivers/accessibility/speakup/spk_types.h index 3a14d39bf896..08011518a28a 100644 --- a/drivers/accessibility/speakup/spk_types.h +++ b/drivers/accessibility/speakup/spk_types.h @@ -49,7 +49,7 @@ enum var_id_t { RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT, PAUSE, CAPS_START, CAPS_STOP, CHARTAB, INFLECTION, FLUSH, - MAXVARS + CUR_PHONETIC, MAXVARS }; typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch, diff --git a/drivers/accessibility/speakup/varhandlers.c b/drivers/accessibility/speakup/varhandlers.c index e1c9f42e39f0..462f8d879053 100644 --- a/drivers/accessibility/speakup/varhandlers.c +++ b/drivers/accessibility/speakup/varhandlers.c @@ -48,6 +48,7 @@ static struct st_var_header var_headers[] = { { "chartab", CHARTAB, VAR_PROC, NULL, NULL }, { "direct", DIRECT, VAR_NUM, NULL, NULL }, { "pause", PAUSE, VAR_STRING, spk_str_pause, NULL }, + { "cur_phonetic", CUR_PHONETIC, VAR_NUM, &spk_cur_phonetic, NULL }, }; static struct st_var_header *var_ptrs[MAXVARS] = { NULL, NULL, NULL }; -- 2.38.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-15 10:08 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-11-15 9:48 [PATCHv2 0/2] default driver params and phonetic spelling while arrowing Mushahid Hussain 2022-11-15 9:48 ` [PATCHv2 1/2] accessibility: speakup: Specify spk_vars among module parameters Mushahid Hussain 2022-11-15 9:48 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain 2022-11-15 10:00 ` Samuel Thibault 2022-11-15 10:05 [PATCHv2 0/2] default driver params and phonetic spelling while arrowing Mushahid Hussain 2022-11-15 10:05 ` [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Mushahid Hussain
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®