[jawsscripts] Re: Writing a new event script

Hi Matt.
ah, something at last I can speak into!

hmmmm, you may've taken on a bit of a tiger by the tail there man, Hope you
have a plan for letting go! <grin.>

like I mean is this all you want this puppy to do to become
accessible/useable?
presumably by a blind user? or is the user actually yourself?

Having been pretty closely involved in the design and testing of
HotSpotClicker, I would myself suggest that this would not be the tool to
use to solve this kind of problem, as HSC's strength does not lie so much in
automonitoring for certain events to happen, like Frames can be made to do.

I would suggest if your a novice at script writing, to definitely try a
frame first, as Jackie suggested, as they tend to be way simpler to get
going with, although they may have other limitations which an informedly and
carefully-written script
may avoid, but the key word here of course is, "carefully and informedly
written!" and
these are not always so easy to do if your knew at the game as I certainly
am.

However, I would provide the further warning/caveat to Jackie's suggestion
that you might automatically try setting the frame to a window, which by the
way
if you weren't aware, you do by doubleClicking the TopLeftCorner set Hotkey
of Control+shift+LeftBracket after moving your jawsCursor into the window in
question, in that you may find, that depending on how the application has
been written, the particular area of
the screen into which this "screen pop" activity occurs, may not actually be
encompassed within it's own uniquely identifiable individual window.
It well may be, but it also may not.
i.e. it may just be an area within a far larger window, which if you set
your Frame to the window using the method described above, would then
obviously read waaaaay too much information.
So, one way to check this, would be to move your jawsCursor to, say, the top
left corner, i.e. the first leftHand letter, of where the text occurs. then,
flip your window restriction roter, I.e. JawsKey+r, from Application window,
which is it's default, to, Current, window instead.
This means it'll restric the jaws cursor to the boundaries of what Jaws
determines is the smallest, "current",  window available, which would be
what your frame
would be set to, if you chose this method outlined above of auto-setting
your frame to the current window size.
Now, Hit control+Home from there, then hit Jaws+Down Arrow to read all.  now
if when you do this, jaws reads only the text you need spoken and nothing
else, then you could certainly go ahead and try setting the frame to that
window as Jackie suggested.
but, if you find that the control+Home movement, when in this Current window
restriction mode, takes your jaws cursor a long ways away from this screen
area, and the SayAll starts reading all kinds of other extraneous
information, either before or after your desired text,
then I would personally suggest setting frame to current window, isn't
likely
to bring you the joy you desire.

certainly if your application is operating at all in a terminal emulation
type environment, this is very likely to be the case.
Don't forget to switch the roter back though to, application, when your done
testing!

Now, some further tips.  when you define your frame, whether you set it to
current window, or you mark the top left and bottom right corners of the
frame manually, by moving your jaws cursor to those points, then hitting
controlShiftLeftBracket and ControlShiftRightBracket respectively, it will
offer you a wizard based approach for setting up your frame. first the name,
then description 1, then a longer description 2.
then it will ask you for a keystroke you may wish to assign to your frame,
I'd suggest choosing one if you can spare the keystrokes, as this can be
handy too, to ReRead or doubleCheck Frame Contents etc.
II like using alt+Top Number rows myself.
then press enter to move to next wizard question.
then it will ask you what you'd like the frame to echo.  here you'd up arrow
to Ehco all, since you want it to speak/echo anything written into this
frame if I've understood you correctly.

hit enter to complete the wizard.

Now, this is where many people go wrong with frames and why they often find
them so unreliable and give up with them in disgust.
.  what the wizard doesn't tell you, and what it really somehow ought to be
made to in my view, since frames have been made to be such a jolly flexible
and powerful tool to bringing relatively quick/easy access to some
situations,
is that you then should hit alt+enter, to immediately go back into frames
Properties of the frame you've just created.
Then you should controlTab once, to what's called the validation rules
section of the properties of the frame.  There you will find two criteria
selected by default when you create any
frame: Window Title, and Window Class.  Jaws should say, "on," when you
arrow between both of these, meaning that criteria is at present on, or
live, to serve as rules for the validation of that frame.
this state can be toggled with spaceBar to, off, if desired for each rule,
and they can even be ordered in priority of validation.
Leave them on at present though.  now, you need to check what text, if any,
it has selected for it's window title matching validation rule.  For
obviously, when creating the frame, it can only grab the text out of the
window title, that was there at the
time of the frame creation process.  However very often, I've found that it
will have selected certain textual
information, that may well not always be present, or remain, in that window
title, across various circumstances in which you are operating the
application, and across which you wish the frame to still be valid, or,
"fire," as I like to say.
So you obviously must get rid of any of that textual information.
Now this is not always easy to determine, of course, if you don't really
know, how this particular window title text, might change, in various
circumstances.
So the trick here, which is a bit of trial and error I admit, is to seek to
work out, from that title, if you think it's at present containing
information that you divine might not always be there in every circumstance,
and which would thus invalidate the frame from working, if it was not.
Like for example, a particular record number, or somethihng like that, which
may change for every new client that calls or whatever.
so you can then hit f2, to edit the text of this window title, and insure
you leave in there, only that information that your as sure as you can be,
will always be present no matter what.

for now, hit enter to accept any changes, and again to save changes to the
frames properties and leave the dialog.
then hit escape to leave frames manager, and you should be asked whether
you'd like to save changes. you must of course hit y to answer yes.
and you should be returned to your application.

now your frame should have two events associated with it that will trigger
it, if it passes the validation criteria.
one event will be an "onKey" event, which means it's set to fire when you
hit the keystroke you've assigned to it, and this has been automatically set
for you to read the text within the frame boundaries by the wizard when you
chose to say yes to assigning a keystroke to the frame.
and the other, is an OnText event, which has been setup by the wizard to
read any newly written text that appears in the boarders of the frame.  you
can of course set it up to only do this if certain text appears in that
frame, but that's another story.

Now, test your frame with your hotkey that you've assigned, and see if it
reads as desired.

You asked also if focus could be made to auto jump to that field upon any
new text being written there.
the answer is, yes it can, but I'd advise perhaps doing that by adding two
separate new OnFrameKey events, to the Event list in the third controlTab of
frames properties for your frame. so you'd go back into frames manager, with
jaws+9 I think it is,
then find your frame in here and hit alt+enter to go back into frames
properties.
then controlTab to the FrameEvents section.
then, hit AltA when in there, to add a new event, and choose, OnFrameKey, as
the event type in this case.
then hit enter to advance through the small wizard style interface, and you
will be asked what action you would like to take place when this frame event
occurs, (in this case, the event of pressing the key associated with the
frame.)
for this first new OnKey event, choose RouteJawsToFrame, as your action, as
you want the mouse to jump to your frame and, eventually, in the next OnKey
event we'll add in a moment,
to  click the leftMouse button there, which in windows will often bring
focus to the control.
then hit enter.
Now you'll notice a third event in the list, all marked as on by default.
you can also toggle these on/off with spaceBar as well.
now you will add the last OnKey event, which will be set to click the
leftMouseButton.  Hit alt+A to add your next event, choose OnFrameKey again,
hit enter to advance to the actions section, then this time, choose the
action, RunScript.  Tip, you can use multi letter navigation in here to more
quickly select your action, i.e. R U for RunScript. tip, don't choose
RunScriptEvent, that's a different type of action which we're not concerned
with right now.
then hit enter. then you should be presented with a whole bunch of premade
scripts from which you can choose.
again using multi letter navigation, type L E F T M quickly, and you should
jump to leftMouseButton.  when you've chosen that, hit enter.
now you should see 4 events in there, and note that again, the
priority/order of the events is important.
there are buttons for, Move event up, and Move event down, in that dialog
box section.
insure in my view that the events are in the order:
OnText, then the OnKey event that speaks your text,
then the OnKey event that routes JawsCursor to frame, then the last OnKey
event which should click the left Mouse button. the last two events are
particularly important, as if they're in the wrong order you might find the
leftMouseButton being clicked in a totally alternate location than you
desire.

Now your OnFrameKey when pressed, should:
A. read the text of the frame;
B. Route the JawsCursor/mouse to the top left corner of the frame, which if
you've defined it manually should be the first letter in the area; and
C. click the leftMouseButton there, which often in windows applications, is
synonymous with setting focus to the control.

You can of course, try setting two more OnText type frame Events to do these
last two actions, instead of the OnFrameKey event, but you may find that
doing this may cut off the proper auto-speaking of all the text in the frame
if you do that? Try it and see! the beauty is, that you can just toggle
off/on, the other OnKey events while you mess around with what works best
and what doesn't etc, which is very groovy and helpful.

I'll leave it there for now and see how you go with that far first, before
provideing any further info/tips about frames usage, of which there are a
few. but they're in my view, relatively easy ones compared to learning how
to write a decent script to do the same job.
let us know how you progress.


Geoff c.

To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Tuesday, February 24, 2009 7:56 AM
Subject: [jawsscripts] Re: Writing a new event script


> Hi all,
> Forgive me if my questions are stupid and completely off point, but I'm
> working with a new application that I need to write a script for.
> This application is a telemarketing type application, and as such, when a
> new call comes in the first name field is immediately populated. What I
want
> to do is tell jaws when a new event happens in this particular edit field
> automatically say or move focus to this field.  Could this be done with a
> frame or even maybe hotspot clicker, or should I attempted to write a
script
> for this.
> Could someone get me started as to where I should start?
> I appreciate any pointers whatsoever!
>
>
> -----Original Message-----
> From: jawsscripts-bounce@xxxxxxxxxxxxx
> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of David Farough
> Sent: Monday, February 23, 2009 3:50 PM
> To: JawsScripts
> Subject: [jawsscripts] Re: Scripts for TaxAct 2008
>
> Hi Gary:
>
> I do not have this program so I do not know how much help I can
> provide.  However, If you answer these questions I may be able to help a
> little.
>
> 1.  Where did you get this program from?  I did a google search on it
> and saw all sorts of similarly named programs and did not want to risk
> looking at the wrong one.
>
> 2.  What is the name of the executable that is spoken when you press
> insert+q when the application has focus?
> I noticed the following entry in the confignames.ini.
> TaxAct06=TaxAct 2006
>
> I suspect that the executable for this version may be TaxAct08
>
> If so, you could add an entry to confignames.ini as follows:
> TaxAct08=TaxAct 2006
>
> Judging from what I am seeing in the configuration files, It may be
> difficult to get this working again if they have made significant
> changes to the interface.
>
>
>
> David Farough
> Application Accessibility Coordinator/coordonateur de l'accessibilité
> Information Technology Services Directorate /
> Direction des services d'information technologiques
> Public Service Commission / Commission de la fonction publique
> Email / Courriel:  David.Farough@xxxxxxxxxxxxx
> Tel. / Tél:    (613) 992-2779
>
> >>> "Gary King" <w4wkz@xxxxxxxxxxxxx> 04:51 pm Sunday, February 22,
> 2009 >>>
> Is anyone planning to modify previous TaxAct scripts to work with
> TaxAct
> 2008?  In the past, simple modifications to the various script and
> associated files made previous versions of TaxAct scripts work with the
>
> current version of the program, but this year, 2nd Story Software seems
> to
> have made changes to the program that prevents JFW from speaking the
> controls.  I have used TaxAct for 10 years and hate to abandon it.
> Importing data from the previous year makes it easy to get started on
> this
> year's taxes; at least it would, if the buttons and checkboxes would
> speak.
>
> Gary King
> mailto:w4wkz@xxxxxxxxxxxxx
>
> __________
> Visit and contribute to The JAWS Script Repository
> http://jawsscripts.com
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
> __________
> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>
> __________
> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>

__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

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

Other related posts: