[jawsscripts] Re: Writing a new event script
- From: "Dennis Brown" <DennisTBrown@xxxxxxxxxxx>
- To: <jawsscripts@xxxxxxxxxxxxx>
- Date: Wed, 25 Feb 2009 12:12:03 -0500
What about setting a place marker on that control? Hitting the letter k
moves you right to it.
Thanks,
Dennis Brown
----- Original Message -----
From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Wednesday, February 25, 2009 11:50 AM
Subject: [jawsscripts] Re: Writing a new event script
> 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
>
>
__________
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: