From nobody Mon Apr 13 17:05:26 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 317C0C433FE for ; Tue, 15 Nov 2022 10:08:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238233AbiKOKIF (ORCPT ); Tue, 15 Nov 2022 05:08:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238135AbiKOKHz (ORCPT ); Tue, 15 Nov 2022 05:07:55 -0500 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2773205F2 for ; Tue, 15 Nov 2022 02:07:52 -0800 (PST) Received: by mail-wr1-x42d.google.com with SMTP id w14so23346976wru.8 for ; Tue, 15 Nov 2022 02:07:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cPu7bwc+ZranhLPX5AB2LeDrS1+qW0XSqyGwXW15FJY=; b=B0M+xp6e67sZ2f07FTofWGuU2cuPrpvpOkA8ld1p02KEmalD04xPWLOxvcY4d6k+Ud YCDnc1st2zHdvvmXsCzeqaHz3a2CJxU5DOhF7WFWOCCoD7XSYCiSRPFe2LqgCWn5gcLN FqGEsDn9tcc6T5A5ty7JdTEgHXDbfqu1ch0SoGhOx+wqQhLHrYQNoaSRt+sxI0ida4lp UHVY4tpWZg7izsiUgKgTnAQGQegqrkm82gfW1ehlLkkuurC4ngitjHVWsMbhMEEiQTfR wiAUbPaHB6hJV1FZ24NwNURiAsNy2HSD6t7AlldPKjxSgt7zvB7MgtQhtjpO5RUiGquz EDWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cPu7bwc+ZranhLPX5AB2LeDrS1+qW0XSqyGwXW15FJY=; b=QXZrrEznaHKH37qpF5vXLDpueaOqI8mLcDF9pqcqaPpc+Rlk+9FgGVeJkRF/acTLGW 0E4xUSkJaSf6IWlhK+RJ6NAQ5YqloieDlfBaCiURPjNTTpTwLYzBOORTODRS06/bZzMy NdM8qCUCHQeGjgroxKda23y4aenTn2h9PenBhj4VQAlgSqn3CB5/MZ5zGVgfm7xye4CA VO17gTFBMYeXoQBkz1Z3e3bXGhhfr4m3MPWxGrsp3HlhOz4XZXihoGHSTR9GlB76eL8X UPvxZ4kRq/1qmj+Ae2XKfaDR2kOH21zCitnb+tEgi5dJOBQCBmgfEavzI8psevRQqH42 MJgw== X-Gm-Message-State: ANoB5pnCcIFGhLwTF3Ijv7HExdff+yPdWpzBNsMD62xqHqo2DUHsGooK ISdGfX7V0fX8gldtdrcVVH0= X-Google-Smtp-Source: AA0mqf4R/x/n80rD/XYttwZg5yBjNpOQNn8RcsMSg++0FvfG66itcVzgKOBHcg0STDusYt2pvzBvyA== X-Received: by 2002:a5d:42c7:0:b0:22e:35c9:fce5 with SMTP id t7-20020a5d42c7000000b0022e35c9fce5mr10196528wrr.534.1668506871535; Tue, 15 Nov 2022 02:07:51 -0800 (PST) Received: from arch.localdomain ([119.160.120.210]) by smtp.gmail.com with ESMTPSA id m16-20020a05600c3b1000b003a3170a7af9sm16577154wms.4.2022.11.15.02.07.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Nov 2022 02:07:51 -0800 (PST) From: Mushahid Hussain To: gregkh@linuxfoundation.org Cc: speakup@linux-speakup.org, linux-kernel@vger.kernel.org, Mushahid Hussain , Samuel Thibault Subject: [PATCHv2 1/2] accessibility: speakup: Specify spk_vars among module parameters Date: Tue, 15 Nov 2022 15:05:29 +0500 Message-Id: <20221115100530.91174-2-mushi.shar@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115100530.91174-1-mushi.shar@gmail.com> References: <20221115100530.91174-1-mushi.shar@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Samuel Thibault --- drivers/accessibility/speakup/main.c | 60 ++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/s= peakup/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[] =3D { +enum spk_vars_id { + BELL_POS_ID =3D 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] =3D { /* bell must be first to set high limit */ - {BELL_POS, .u.n =3D {NULL, 0, 0, 0, 0, 0, NULL} }, - {SPELL_DELAY, .u.n =3D {NULL, 0, 0, 4, 0, 0, NULL} }, - {ATTRIB_BLEEP, .u.n =3D {NULL, 1, 0, 3, 0, 0, NULL} }, - {BLEEPS, .u.n =3D {NULL, 3, 0, 3, 0, 0, NULL} }, - {BLEEP_TIME, .u.n =3D {NULL, 30, 1, 200, 0, 0, NULL} }, - {PUNC_LEVEL, .u.n =3D {NULL, 1, 0, 4, 0, 0, NULL} }, - {READING_PUNC, .u.n =3D {NULL, 1, 0, 4, 0, 0, NULL} }, - {CURSOR_TIME, .u.n =3D {NULL, 120, 50, 600, 0, 0, NULL} }, - {SAY_CONTROL, TOGGLE_0}, - {SAY_WORD_CTL, TOGGLE_0}, - {NO_INTERRUPT, TOGGLE_0}, - {KEY_ECHO, .u.n =3D {NULL, 1, 0, 2, 0, 0, NULL} }, + [BELL_POS_ID] =3D { BELL_POS, .u.n =3D {NULL, 0, 0, 0, 0, 0, NULL} }, + [SPELL_DELAY_ID] =3D { SPELL_DELAY, .u.n =3D {NULL, 0, 0, 4, 0, 0, NULL} = }, + [ATTRIB_BLEEP_ID] =3D { ATTRIB_BLEEP, .u.n =3D {NULL, 1, 0, 3, 0, 0, NULL= } }, + [BLEEPS_ID] =3D { BLEEPS, .u.n =3D {NULL, 3, 0, 3, 0, 0, NULL} }, + [BLEEP_TIME_ID] =3D { BLEEP_TIME, .u.n =3D {NULL, 30, 1, 200, 0, 0, NULL}= }, + [PUNC_LEVEL_ID] =3D { PUNC_LEVEL, .u.n =3D {NULL, 1, 0, 4, 0, 0, NULL} }, + [READING_PUNC_ID] =3D { READING_PUNC, .u.n =3D {NULL, 1, 0, 4, 0, 0, NULL= } }, + [CURSOR_TIME_ID] =3D { CURSOR_TIME, .u.n =3D {NULL, 120, 50, 600, 0, 0, N= ULL} }, + [SAY_CONTROL_ID] { SAY_CONTROL, TOGGLE_0}, + [SAY_WORD_CTL_ID] =3D {SAY_WORD_CTL, TOGGLE_0}, + [NO_INTERRUPT_ID] =3D { NO_INTERRUPT, TOGGLE_0}, + [KEY_ECHO_ID] =3D { KEY_ECHO, .u.n =3D {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, 0= 444); +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, in= t, 0444); +module_param_named(punc_level, spk_vars[PUNC_LEVEL_ID].u.n.default_val, in= t, 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, 0= 444); + +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 wh= en speakup's spell word review command is pressed."); +MODULE_PARM_DESC(attrib_bleep, "Beeps the PC speaker when there is an attr= ibute change such as background color when using speakup review commands. O= ne =3D on, zero =3D off."); +MODULE_PARM_DESC(bleeps, "This controls whether one hears beeps through th= e 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 =3D on zero =3D off or don't echo keys."); + module_init(speakup_init); module_exit(speakup_exit); -- 2.38.1 From nobody Mon Apr 13 17:05:26 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B81E5C4332F for ; Tue, 15 Nov 2022 10:08:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238241AbiKOKII (ORCPT ); Tue, 15 Nov 2022 05:08:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238214AbiKOKH6 (ORCPT ); Tue, 15 Nov 2022 05:07:58 -0500 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 413561A82F for ; Tue, 15 Nov 2022 02:07:57 -0800 (PST) Received: by mail-wr1-x432.google.com with SMTP id bs21so23366499wrb.4 for ; Tue, 15 Nov 2022 02:07:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x4vZ6ZNV0MeZz8K+VcEaVJqnAptkGto8thD1d7pNpbU=; b=hH1H+YPmSvv2SuL5HTKzeCJH8KYmEx8ys7QaAYh3dmCfTopC21BFNsjOFGyTitKRLc gIWCm2L9DlawqFv3AXjpQu5GDWeV6/wScu8/ebVUSs1LL6PCcsFEPC7D8b0eYC9xZxto j4PcOkn/1Dnuo3fpXCDtXIvXaTgWuOZMWqaLTotbb/jbIyeMcvY9c/zNXhVaGe1Lz96o awUZYlzeWrfLIQ8eXpZfKTTWf2YqjuqJaG6QOA+qCakAH7BCkLmZsXmVerzgOAl4JyjA nZxAkCDQ+nZJ1Su0qxUPBzYWfapdkNRGYHx325f/5RM5MPt/sjU1MPBnxudNEC2tLgUI fnoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x4vZ6ZNV0MeZz8K+VcEaVJqnAptkGto8thD1d7pNpbU=; b=Zy9J4hjyh9QYVMnaHNFkdlFrwBMC8Xs4Wp96PGpDNvt3pnDuBlGqduI43bKfFUporF crxS1sNRrHx7iaFWKbLlfizgfRIEjFfoKUP068pXYW0tNuhk3C9Zk5gPkmazbqrsB77w zGVbfMUqGGfd4CFkIVGJB2C5HrPK/WJ5CjTU/6/BJUrim5NewkfDDqliBQPFJGxTYHyr zsYZ554zXq5AIXs2BDvcd9ms22Ka799Gh7VubzYCDbYfrRxg4B+tC983Put1og3xbxdY iKmPO8ivNxmu6I7JBSwDL1jR8Uw+8cR5vklWOIpUHcyiJzPIFJayL1ig+W9Uwk2VhZM7 lO4g== X-Gm-Message-State: ANoB5pk6zP77e3UpGvOw+n5akRqpRi6RjmYrIstcfjbex0ipf8SOA1+1 T/63Ja2SY0PSZGHPwQHsCu8= X-Google-Smtp-Source: AA0mqf5yhL+mHVS2V09H7V6hvWOeLksegBIR0ugANfltDdisjaRqE3GiHTiaSd8dlcVZj31ikW1iRg== X-Received: by 2002:adf:ebcb:0:b0:22f:1aae:6a58 with SMTP id v11-20020adfebcb000000b0022f1aae6a58mr10311535wrn.464.1668506875777; Tue, 15 Nov 2022 02:07:55 -0800 (PST) Received: from arch.localdomain ([119.160.120.210]) by smtp.gmail.com with ESMTPSA id m16-20020a05600c3b1000b003a3170a7af9sm16577154wms.4.2022.11.15.02.07.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Nov 2022 02:07:55 -0800 (PST) From: Mushahid Hussain To: gregkh@linuxfoundation.org Cc: speakup@linux-speakup.org, linux-kernel@vger.kernel.org, Mushahid Hussain , Samuel Thibault Subject: [PATCHv2 2/2] accessibility: speakup: phonetic spelling while arrowing letter by letter Date: Tue, 15 Nov 2022 15:05:30 +0500 Message-Id: <20221115100530.91174-3-mushi.shar@gmail.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221115100530.91174-1-mushi.shar@gmail.com> References: <20221115100530.91174-1-mushi.shar@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 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=3D1, 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 Reviewed-by: Samuel Thibault --- 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 arrowin= g through + a word letter by letter. This doesn't affect the spelling when typing + the characters. When cur_phonetic=3D1, speakup will speak characters + phoneticaly when arrowing over a letter. When cur_phonetic=3D0, 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/accessibili= ty/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 =3D __ATTR(say_word_ctl, 0644, spk_var_show, spk_var_store); static struct kobj_attribute spell_delay_attribute =3D __ATTR(spell_delay, 0644, spk_var_show, spk_var_store); +static struct kobj_attribute cur_phonetic_attribute =3D + __ATTR(cur_phonetic, 0644, spk_var_show, spk_var_store); /* * These attributes are i18n related. @@ -967,6 +969,7 @@ static struct attribute *main_attrs[] =3D { &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/s= peakup/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] =3D "\0"; char spk_str_caps_stop[MAXVARLEN + 1] =3D "\0"; char spk_str_pause[MAXVARLEN + 1] =3D "\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] =3D { @@ -1290,6 +1291,7 @@ static struct var_t spk_vars[NB_ID] =3D { [SAY_WORD_CTL_ID] =3D {SAY_WORD_CTL, TOGGLE_0}, [NO_INTERRUPT_ID] =3D { NO_INTERRUPT, TOGGLE_0}, [KEY_ECHO_ID] =3D { KEY_ECHO, .u.n =3D {NULL, 1, 0, 2, 0, 0, NULL} }, + [CUR_PHONETIC_ID] =3D { CUR_PHONETIC, .u.n =3D {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 =3D=3D 1 || is_cursor =3D=3D 4) say_line_from_to(vc, 0, vc->vc_cols, 0); - else - say_char(vc); + else { + if (spk_cur_phonetic =3D=3D 1) + say_phonetic_char(vc); + else + say_char(vc); + } spk_keydown =3D 0; is_cursor =3D 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, 0= 444); +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 wh= en speakup's spell word review command is pressed."); @@ -2486,6 +2493,7 @@ MODULE_PARM_DESC(say_control, "This controls if speak= up 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 =3D on zero =3D off or don't echo keys."); +MODULE_PARM_DESC(cur_phonetic, "Controls if speakup speaks letters phoneti= cally during navigation. One =3D on zero =3D off or don't speak phoneticall= y."); module_init(speakup_init); module_exit(speakup_exit); diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibilit= y/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/accessibil= ity/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/accessib= ility/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[] =3D { { "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] =3D { NULL, NULL, NULL }; -- 2.38.1