[jawsscripts] Re: Saying two messages with a specific period of silence in between

  • From: "Kamil" <kamilimak@xxxxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Mon, 14 Jul 2008 20:48:46 -0400

Many thanks to Jamal and Doug for their quick responses.

Based on Jamal's tip, I wrote the following code which does what I wanted.
Awesome!

One of the side effects is the display of the virtual viewer window.
Despite using SetJCFOption and even SetDefaultJCFOption functions to reset 
the related setting, OPT_VIRT_VIEWER,
the window still shows up.
Resetting it using Configuration Manager does help but it's not what I want.
I would like to temporarily reset the option, say messages, and put it back 
to its original value.
Any suggestion?

The other side effect is, if the user presses letters during SayAll,
they will be interpreted as navigation commands.
How can I suppress that?

Your input is highly appreciated.

Camille


Script Test ()
    Let GOriginalVirtualViewerOption = GetJCFOption (OPT_VIRT_VIEWER)
    SetJCFOption (OPT_VIRT_VIEWER, 0)

    Let GOriginalDefaultVirtualViewerOption = GetDefaultJCFOption 
(OPT_VIRT_VIEWER)
    SetDefaultJCFOption (OPT_VIRT_VIEWER, 0)

    UserBufferClear ()
    UserBufferAddText ("First Message. The Script Manager is a JAWS script 
editing program with all the features necessary for you to create scripts.")
    UserBufferActivate ()
    SayAll ()
EndScript

Void Function SayAllStoppedEvent()
    SayAllStoppedEvent()
    UserBufferDeactivate ()
    SetJCFOption (OPT_VIRT_VIEWER, GOriginalVirtualViewerOption)
    SetDefaultJCFOption (OPT_VIRT_VIEWER, 
GOriginalDefaultVirtualViewerOption)

    ScheduleFunction ("SaySecondMessage", 50)
EndFunction

Void Function SaySecondMessage ()
    SayString ("Second Message. The Script Manager always opens the script 
file associated with the active application. If the program does not have 
any scripts, JAWS creates a new script file.")
EndFunction




----- Original Message ----- 
From: "Doug Lee" <doug.lee@xxxxxxxxxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Monday, July 14, 2008 1:00 PM
Subject: [jawsscripts] Re: Saying two messages with a specific period of 
silence in between


> This is a very clever suggestion actually, and one I think I tried
> once but forgot about.  It may help, but I still doubt it will work as
> well as you'd like.  The SayAll process does not actually keep code
> execution in precise sync with speech.  You can stop SayAll on an
> exact word, but this is actually done by retreating to that word
> rather than literally catching JAWS in the act of saying it.
>
> The SayAll system does prove, however, that JAWS internally has enough
> information to implement something like I suggested before, direct
> access to synthesizer indexing functionality.
>
> On Mon, Jul 14, 2008 at 12:03:23PM -0400, Jamal Mazrui wrote:
> This is a hack, but you can do a SayAll in the user buffer, and tell
> when it completes with the SayAllStoppedEvent function.  You could
> either speak the second message within that function, or use that event
> handler to set a global variable indicating that a SayAll has stopped.
> Your script would go into a While loop testing the global variable
> before exiting.
>
> Jamal
> On Sat, 12 Jul 2008, Kamil wrote:
>
>> Return-Path: <jawsscripts-bounce@xxxxxxxxxxxxx>
>> Received: from psmtp.com (exprod6mx197.postini.com [64.18.1.209])
>> =09by smart.net (8.9.1/8.9.1) with SMTP id WAA01213
>> =09for <empower@xxxxxxxxx>; Sat, 12 Jul 2008 22:08:03 -0400
>> Received: from source ([206.53.239.180]) by exprod6mx197.postini.com
>>     ([64.18.5.10]) with SMTP;
>> =09Sat, 12 Jul 2008 21:07:52 CDT
>> Received: from localhost (localhost [127.0.0.1])
>> =09by turing.freelists.org (Avenir Technologies Mail Multiplex) with
>>     ESMTP id C59ED8C2B3D;
>> =09Sat, 12 Jul 2008 22:07:52 -0400 (EDT)
>> Received: from turing.freelists.org ([127.0.0.1])
>> =09by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 
>> 100=
> 24)
>> =09with ESMTP id 27403-10; Sat, 12 Jul 2008 22:07:52 -0400 (EDT)
>> Received: from turing (localhost [127.0.0.1])
>> =09by turing.freelists.org (Avenir Technologies Mail Multiplex) with
>>     ESMTP id 401CF8C2B38;
>> =09Sat, 12 Jul 2008 22:07:52 -0400 (EDT)
>> Received: with ECARTIS (v1.0.0; list jawsscripts); Sat,
>>      12 Jul 2008 22:07:17 -0400 (EDT)
>> X-Original-To: jawsscripts@xxxxxxxxxxxxx
>> Delivered-To: jawsscripts@xxxxxxxxxxxxx
>> Received: from localhost (localhost [127.0.0.1])
>> =09by turing.freelists.org (Avenir Technologies Mail Multiplex) with
>>     ESMTP id 120248C2B2E
>> =09for <jawsscripts@xxxxxxxxxxxxx>; Sat, 12 Jul 2008 22:07:17 -0400 (EDT)
>> Received: from turing.freelists.org ([127.0.0.1])
>> =09by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 
>> 100=
> 24)
>> =09with ESMTP id 27340-06 for <jawsscripts@xxxxxxxxxxxxx>;
>> =09Sat, 12 Jul 2008 22:07:17 -0400 (EDT)
>> Received: from bay0-omc1-s40.bay0.hotmail.com
>>     (bay0-omc1-s40.bay0.hotmail.com [65.54.246.112])
>> =09by turing.freelists.org (Avenir Technologies Mail Multiplex) with
>>     ESMTP id ADD198C296D
>> =09for <jawsscripts@xxxxxxxxxxxxx>; Sat, 12 Jul 2008 22:07:16 -0400 (EDT)
>> Received: from hotmail.com ([10.6.6.17]) by
>>     bay0-omc1-s40.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959);
>> =09 Sat, 12 Jul 2008 19:07:15 -0700
>> Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC;
>> =09 Sat, 12 Jul 2008 19:07:15 -0700
>> Message-ID: <BLU138-DAV7719AB4CE7505F7580687A3920@xxxxxxx>
>> Received: from 24.36.189.122 by BLU138-DAV7.phx.gbl with DAV;
>> =09Sun, 13 Jul 2008 02:07:13 +0000
>> X-Originating-IP: [24.36.189.122]
>> X-Originating-Email: [kamilimak@xxxxxxxxxxx]
>> X-Sender: kamilimak@xxxxxxxxxxx
>> From: "Kamil" <kamilimak@xxxxxxxxxxx>
>> To: <jawsscripts@xxxxxxxxxxxxx>
>> References: <383613.43172.qm@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
>>     <BLU138-DAV28AC7A1A2C9E105EF76C8A3920@xxxxxxx>
>>     <1BAE72B02DC5425C878BA53146B147C8@DBrown07>
>>     <BLU138-DAV442E1DDC6B48388CAAB1DA3920@xxxxxxx>
>> Subject: [jawsscripts] Saying two messages with a specific period of
>>     silence in between
>> Date: Sat, 12 Jul 2008 22:11:01 -0400
>> MIME-Version: 1.0
>> Content-type: text/plain; charset=3Diso-8859-1
>> Content-Transfer-Encoding: 8bit
>> X-Priority: 3
>> X-MSMail-Priority: Normal
>> X-Mailer: Microsoft Outlook Express 6.00.2900.5512
>> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
>> X-OriginalArrivalTime: 13 Jul 2008 02:07:15.0563 (UTC)
>>     FILETIME=3D[2BC0B3B0:01C8E48D]
>> X-Virus-Scanned: Debian amavisd-new at localhost.localdomain
>> X-archive-position: 1972
>> X-ecartis-version: Ecartis v1.0.0
>> Sender: jawsscripts-bounce@xxxxxxxxxxxxx
>> Errors-to: jawsscripts-bounce@xxxxxxxxxxxxx
>> X-original-sender: kamilimak@xxxxxxxxxxx
>> Precedence: normal
>> Reply-to: jawsscripts@xxxxxxxxxxxxx
>> List-help: <mailto:ecartis@xxxxxxxxxxxxx?Subject=3Dhelp>
>> List-unsubscribe: 
>> <jawsscripts-request@xxxxxxxxxxxxx?Subject=3Dunsubscrib=
> e>
>> List-software: Ecartis version 1.0.0
>> List-Id: jawsscripts <jawsscripts.freelists.org>
>> X-List-ID: jawsscripts <jawsscripts.freelists.org>
>> List-subscribe: <jawsscripts-request@xxxxxxxxxxxxx?Subject=3Dsubscribe>
>> List-owner: <mailto:rharmon@xxxxxxxxxxxxxxxxxxx>
>> List-post: <mailto:jawsscripts@xxxxxxxxxxxxx>
>> List-archive: <//www.freelists.org/archives/jawsscripts>
>> X-list: jawsscripts
>> X-Virus-Scanned: Debian amavisd-new at localhost.localdomain
>> X-pstn-neptune: 3/1/0.33/35
>> X-pstn-levels: (S:82.81490/99.90000 CV:99.0000 R:95.9108 P:95.9108
>>     M:97.0282 C:98.6951 )
>> X-pstn-settings: 5 (2.0000:2.0000) s cv gt3 gt2 gt1 r p m c
>> X-pstn-addresses: from <kamilimak@xxxxxxxxxxx> [db-null]
>> X-Spam-Status: No, hits=3D0.0 required=3D5.0 tests=3D version=3D2.20
>> X-Spam-Level:
>>
>> Hi folks,
>>
>> I would like JAWS to say two messages with exactly two-second silence in
>> between.
>> Neither Delay (20), nor twenty Pause () commands works,
>> since both starts right after the first message is sent to the TTS, not 
>> w=
> hen
>> it's completely spoken.
>> I tried counting number of words in the first message,
>> and calculating the time needed for it to be completely spoken using the
>> current speech rate.
>> The result varies based on the total number of sylabels in the message.
>>
>> Can you think of a better solution?
>> As far as I know, there is no function such as TtsIsDoneEvent or 
>> IsTtsBus=
> y.
>>
>> Thanks,
>>
>> Camille
>>
>> __________=A0
>> View the list's information and change your settings at
>> //www.freelists.org/list/jawsscripts
>>
> __________?
> View the list's information and change your settings at
> //www.freelists.org/list/jawsscripts
>
> -- 
> Doug Lee, Senior Accessibility Programmer
> SSB BART Group - Accessibility-on-Demand
> mailto:doug.lee@xxxxxxxxxxxxxxxx  http://www.ssbbartgroup.com
> "While they were saying among themselves it cannot be done,
> it was done." --Helen Keller
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/jawsscripts
>
> 

__________ 
View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: