[jawsscripts] Re: Writing a new event script
- From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
- To: <jawsscripts@xxxxxxxxxxxxx>
- Date: Thu, 26 Feb 2009 03:50:55 +1100
HI matt.
Ah, hmmm,
you unfortunately neglected to mention that it was an html based app,
operating probably inside an internet explorer or other browser type front
end.
is that right?
if so, hmm, this actually changes a lot of things!
What version of jaws are you using with this?
prior to version 8 for example, route Jaws to Virtual pc tended to work very
ppoorly if at all.
but they fixed it somewhat I think at version 8.
Now in my limited experience at trying to use frames within html
apps/virtual pc land, I've found them to be quite a lot less effective than
in non-virtual pc/non-html environs, because in the html environs, things
tend to be more dynamically updated and change their absolute onScreen
positions a lot more, than they seem to do in non-html applications. this
is in my view anywayz.
And I think Jackie would also concur, would you Jackie?
that in an html type environ, trying to use the setFrameToWindow function
would almost certainly not be effective, as it seems that controls or
elements as they seem to be called in html land, are more object based, than
they are window based?
But that's coming from someone with extremely limited knowledge of how
things in html land do their thang.
You can certainly try the frames approach I outlined in last message, but I
wouldn't be at all surprised to learn that it proved ineffective, as I say,
just due to how much more dynamically movable, everything seems to be in
those types of apps.
But, who knows. it'll be a suck it and se game I think, though as I say I'm
less confident it'll work well for you.
and of course the other thing inb html apps like this is, you've got the
whole issue of forms mode on/off to be concerned with too, sometimes just
left clicking even if in the right place, doesn't seem to necessarily
autoactivate forms mode either, not that this would be crucial I guess, if
you had the edit box autoGain focus, and it's text spoken to you
automatically. in html land though
I have used hsc to glance at things like this with hotKeys, based on
designing a hotspot that first looks for some static onscreen text or label,
that may surround your dynamic edit box text, and then doing an offset from
that, and then, say, reading current word. you can actualy input little
UserFunctions into the hotspot definitions box as well, which I've done to
autoTurn forms Mode on in a particular edit box, but it's a bit trickier to
do and I'd have to paste you in some code probably to give this a shot.
it's sometimes reliable and sometimes not though, in my experience, re
whether forms mode gets properly triggered or not.
the other tricky thing about this method, is that sometimes, for some wierd
reason, hsc/jaws functions, for this is what hsc is using, can't actually
always locate text that is onscreen, probably due to the whole OSM thing
which may be somehow not refreshed the same way in html land, I'm not sure.
But I know sometimes I hit my hsc defined key to read something, based on it
finding a text label then offsetting from that, and it'll claim it can't see
the text, then I might ScrenRefresh and it'll then see it, ... stuff like
that.
Some of the other sharper tools in the shed up here though, may be able to
tell you in script land, like offer you some code etc, which may help you
hierarchically sort through the elements for the xx edit box on Screen, or
using Object searches, stuff like that, of which I am very unknowledgeable.
Message -----
From: "matt" <mcdiemert@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Thursday, February 26, 2009 3:05 AM
Subject: [jawsscripts] Re: Writing a new event script
> Jeff,
> Wow, thanks so much for such a great explonation.
> The application I'm working with is sort of like a web bassed application
> within it's on program. What I mean by that is standard Quick nav keys
such
> as e for edit field and C for combo box work quite nicely. The only
problem
> we are having is when the call comes in the Edit field which contains the
> customers first name is about two tabs or two presses of the letter E
away.
> It's really important obviously to know the first name as quickly as
> possible to engage the caller.
> I'll try some of these suggestions you've so kindly provided me. They are
> much appreciated.
>
>
>
>
> -----Original Message-----
> From: jawsscripts-bounce@xxxxxxxxxxxxx
> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Geoff Chapman
> Sent: Wednesday, February 25, 2009 10:27 AM
> To: jawsscripts@xxxxxxxxxxxxx
> Subject: [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
>
> __________
> 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: