Interestingly enough, folks, the windows calculator scripts actually have such a function, activated by jawsKey + f8, & found in the script called ListCalculatorFunctions(). This whole thing is weird, though, because for example, if in scientific view, & u do a findWindow() & search for the window whose name is "1", it'll actually click the button whose name is 1/x. Sounds like a bug in Jaws to me--what do yall think? Mario, good 4 u regarding going to the list & stimulating this type of discussion! For every1 else, Mario is 1 of my students/former students in 3 different classes now, & is a very conscientious learner of whom I'm very proud, for whatever worth that has to him. & his job of learning scripting isn't made any easier w/this type of bizzarre behavior on the part of Jaws. Sorry for that, MB--welcome to the weird & wonderful world of Jaws scripting! On 9/28/10, Martin Slack <m.g.slack@xxxxxxxxxxxx> wrote: > Hi Mario, > > I should say that I only tested my code on the simple display, and that > when I try the scientific view, my code presses the wrong buttons in a > systematic way which I haven't got to the bottom of yet. Having said that, > I would say that you haven't completed the key sequence for your chosen > example. Pressing enter to choose five only inserts five into the display, > it doesn't complete the calculation. What do you get when you search for > the equals key in the dialog list as the final step and activate that? > > Martin > > > ----- Original Message ----- > From: "Mario Brusco" <mrb620@xxxxxxxxxxx> > To: <jawsscripts@xxxxxxxxxxxxx> > Sent: Tuesday, September 28, 2010 3:38 PM > Subject: [jawsscripts] Re: dlgList of buttons > > >> Hey Martin, your TestCalc script works like you said, but still doesn't >> give >> me the expected result. For example, 2^5=32, but when entering 2, hit the >> hotkey to call the TestCalc script, type x to get the x^y choice, press >> enter key, then type 5 and press enter, 5 is announced. Meaning that it >> doesn't perform the intended calculation, because if you type 2, use the >> JAWSCursor to find and click the x^y button,activate PCCursor, type 5 and >> then enter or =, 32 is announced. >> >> I've also noticed after pressing the testCalc hotkey, the 2 in the display >> changes to a ). >> >> I'm wondering if an additional move to is needed before the left click >> would >> fix the problem? just an idea. >> >> ----- Original Message ----- >> From: "Martin Slack" <m.g.slack@xxxxxxxxxxxx> >> To: "JAWSScripts" <jawsscripts@xxxxxxxxxxxxx> >> Sent: Tuesday, September 28, 2010 7:26 AM >> Subject: [jawsscripts] Re: dlgList of buttons >> >> >> Hi Mario, >> >> The FindWindow function seems to be a problem. Once I got the dialog >> list >> working, I found that FindWindow would not reliably take me to the named >> button: it stopped at the first button it found which contained the >> desired >> name as a substring. So I had to complicate matters by saving an >> additional >> list of button handles as I iterated through the collection. See below. >> This code is working on my version of Calc under XP Home: >> >> Const >> sep = "\007" >> >> Script testCalc () >> var >> String sButtons, ;list of button names >> String sHandles, ;list of button handles >> String sItem, ;name of chosen button >> int iIndex, ;index of button in dialog list >> handle hW ;general window handle >> >> ; find the first child button of Application Main Window >> let hW = FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button", "") >> >> ; if current window has the class "Button" >> ; save its handle and name to separate lists >> ; then step to next window at this level >> while (hW) >> if (StringContains (GetWindowClass (hW), "Button")) then >> let sHandles = sHandles + IntToString (hW) + sep >> let sButtons = sButtons + GetWindowText (hW, false) + sep >> endif >> let hW = GetNextWindow (hW) >> endwhile >> >> ; request index of required button from dialog list >> let iIndex= dlgSelectItemInList (sButtons, "Calculator Buttons", false, 1) >> >> ; find corresponding handle >> let hW = StringToHandle (StringSegment (sHandles, sep, iIndex)) >> >> ; Move JAWS cursor to button automatically >> MoveToWindow (hW) >> >> ; give the cursor time to move and do a left click >> Pause () >> LeftMouseButton () >> >> ; give calculator time to respond, change back to PC Cursor >> ; and speak result in calculator display >> Pause () >> PCCursor () >> SayChunk () >> EndScript >> >> hth >> >> Martin >> >> >> >> ----- Original Message ----- >> From: "Mario Brusco" <mrb620@xxxxxxxxxxx> >> To: <jawsscripts@xxxxxxxxxxxxx> >> Sent: Tuesday, September 28, 2010 3:04 AM >> Subject: [jawsscripts] Re: dlgList of buttons >> >> >>> Hi Martin, inserting your while code brings up a empty list, no items >>> (buttons). Now to get the button names in there. have any suggestions? >>> >>> ----- Original Message ----- >>> From: "Martin Slack" <m.g.slack@xxxxxxxxxxxx> >>> To: "JAWSScripts" <jawsscripts@xxxxxxxxxxxxx> >>> Sent: Monday, September 27, 2010 6:01 PM >>> Subject: [jawsscripts] Re: dlgList of buttons >>> >>> >>> Hi Mario, >>> >>> The line in your original code which I mentioned before as being >>> commented >>> out is actually in the wrong place. As it stands, you will only look at >>> the >>> next window >>> if the first window you find is a button. Try this: >>> >>> while ((hW) && not IsKeyWaiting ()) >>> if (GetWindowSubTypeCode (hW) == 1) then >>> let sList = sList + GetWindowName (hW) + sep >>> endIf >>> let hW = GetNextWindow (hW) ;this now happens whether you find a button >>> or >>> not >>> endWhile ; >>> >>> hth >>> >>> Martin >>> >>> ----- Original Message ----- >>> From: "Mario Brusco" <mrb620@xxxxxxxxxxx> >>> To: <jawsscripts@xxxxxxxxxxxxx> >>> Sent: Monday, September 27, 2010 10:06 PM >>> Subject: [jawsscripts] Re: dlgList of buttons >>> >>> >>>> hi David, which code are your comments referring to, the first or >>>> Jackie's? >>>> >>>> I've added an iCount variable into the while loop as follows: >>>> >>>> var int iCount, >>>> bla bla bla >>>> while ... && iCount<100 >>>> bla bla bla >>>> let iCount= iCount+1 >>>> EndWhile >>>> >>>> now a jawskey+control+b results as the script not being recognized >>>> (shouldn't it be a >100?). but I like your idea too. Exactly where and >>>> how >>>> would it be implemented without the iCount stuff?(exact code please as I >>>> am >>>> not a true scripter). >>>> >>>> I cringe when I need to force boot to get jaws back, and I'd like a sure >>>> fire way to prevent jaws from hanging. >>>> ----- Original Message ----- >>>> From: "David Farough" <David.Farough@xxxxxxxxxxxxx> >>>> To: <jawsscripts@xxxxxxxxxxxxx> >>>> Sent: Monday, September 27, 2010 2:02 PM >>>> Subject: [jawsscripts] Re: dlgList of buttons >>>> >>>> >>>> hi Mario; >>>> You could always add the Not IsKeyWaiting () condition to your while >>>> loop. This will terminate the loop as soon as you hit a key. >>>> >>>> In the final FindWindow, you should only specify one value in the >>>> arguments, You can specify "" (null string ) . for the class and the >>>> name for the window you are looking for. >>>> >>>> >>>> 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 >>> Mario Brusco <mrb620@xxxxxxxxxxx> >>>> 01:00 PM Monday, September 27, 2010 >>> >>>> Nope, still hangs. hmm, I'm wondering if there's a way to avoid the >>>> hanging >>>> without interfering the intended function of the script, sort of a >>>> safety >>>> out? I'm wary of forcing to turn off the PC (by holding the power >>>> button >>>> down until the PC shuts down (cold boot)) in order to get speech back; >>>> I've >>>> had to do this too many times. >>>> >>>> ----- Original Message ----- >>>> From: "Jackie McBride" <abletec@xxxxxxxxx> >>>> To: <jawsscripts@xxxxxxxxxxxxx> >>>> Sent: Monday, September 27, 2010 12:11 PM >>>> Subject: [jawsscripts] Re: dlgList of buttons >>>> >>>> >>>> Mario, let's revise the while loop, as follows: >>>> >>>> var >>>> String sList, ;will contain list of buttons >>>> String sItem, ;will contain the desired button name >>>> int iIndex, ;contains number of button selected >>>> handle hW ;contains window handles >>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button", >>>> "") >>>> ;looks for a type (Button), starting from main window >>>> while (hW) ;while valid window handle found >>>> if GetWindowSubTypeCode (hW)== 1 then ;it's a button,gets name of >>>> button and >>>> adds it to the list, as well as the \007 item separator >>>> let sList= sList+GetWindowName (hW)+sep >>>> >>>> endIf >>>> ;let hW= GetNextWindow (hW) ;go to next window >>>> endWhile ;displays the list of buttons from which to pick, iIndex >>>> returns >>>> the button number >>>> let iIndex= dlgSelectItemInList (sList, "calculator buttons", 1) ;gets >>>> the >>>> name of the button selected >>>> let sItem= stringSegment (sList, sep, iIndex) >>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), >>>> "Button", sItem) >>>> if hW then ;valid window handle >>>> SetFocus(hw) >>>> TypeKey("space") >>>> else >>>> SayMessage (OT_MESSAGE, "window not found") >>>> endIf >>>> >>>> EndScript >>>> >>>> >>>> On 9/27/10, Mario Brusco <mrb620@xxxxxxxxxxx> wrote: >>>>> hi scripters, I am trying to adapt the following code to retrieve a >>>> list >>>>> of >>>>> the Windows calculator buttons whether it is in standard or >>>> scientific >>>>> mode, >>>>> whether the buttons are disabled or not. It seems to hang at some >>>> point. >>>>> can >>>>> someone please help to get it working for me? Maybe the problem is in >>>> the >>>>> while loop? I dabble lightly and am not a true scripter yet, so I >>>> need >>>>> actual code: >>>>> >>>>> const >>>>> sep = "\007" >>>>> >>>>> Script GetButton () >>>>> ;control+jawskey+b >>>>> ; gathers the buttons in a window into a list, user can use arrows to >>>> use >>>>> the arrow keys and enter key to select a function >>>>> ; works in any window/dialog >>>>> var >>>>> String sList, ;will contain list of buttons >>>>> String sItem, ;will contain the desired button name >>>>> int iIndex, ;contains number of button selected >>>>> handle hW ;contains window handles >>>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), "Button", >>>> "") >>>>> ;looks for a type (Button), starting from main window >>>>> while (hW) ;while valid window handle found >>>>> if GetWindowSubTypeCode (hW)== 1 then ;it's a button,gets name of >>>> button >>>>> and >>>>> adds it to the list, as well as the \007 item separator >>>>> let sList= sList+GetWindowName (hW)+sep >>>>> ;let hW= GetNextWindow (hW) ;go to next window >>>>> endIf >>>>> endWhile ;displays the list of buttons from which to pick, iIndex >>>> returns >>>>> the button number >>>>> let iIndex= dlgSelectItemInList (sList, "calculator buttons", 1) >>>> ;gets the >>>>> name of the button selected >>>>> let sItem= stringSegment (sList, sep, iIndex) >>>>> SaveCursor () >>>>> JAWSCursor () >>>>> RouteJAWSToPc ();finds the button & gets its handle >>>>> let hW= FindWindow (GetAppMainWindow (GetCurrentWindow ()), >>>>> "ThunderRT6CommandButton", sItem) >>>>> if hW then ;valid window handle >>>>> if MoveToWindow (hW) then ;move to the window whose handle u just >>>> got >>>>> LeftMouseButton () >>>>> Else >>>>> SayMessage (OT_MESSAGE, "cannot move to button") >>>>> endIf >>>>> else >>>>> SayMessage (OT_MESSAGE, "window not found") >>>>> endIf >>>>> RestoreCursor () >>>>> EndScript >>>>> >>>>> __________ >>>>> >>>>> View the list's information and change your settings at >>>>> //www.freelists.org/list/jawsscripts >>>>> >>>>> >>>> >>>> >>>> -- >>>> Change the world--1 deed at a time >>>> Jackie McBride >>>> Scripting Classes: http://jawsscripting.lonsdalemedia.org >>>> homePage: www.abletec.serverheaven.net >>>> For technophobes: www.technophoeb.com >>>> __________ >>>> >>>> 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 >>>> >>>> >>>>> >>>> This e-mail message is intended for the named recipient(s) and may >>>> contain information that is privileged, confidential and/or exempt from >>>> disclosure under applicable law. Unauthorized disclosure, copying or >>>> re-transmission is prohibited. If you are not a named recipient or not >>>> authorized by the named recipient(s), or if you have received this >>>> e-mail in error, then please notify the sender immediately and delete >>>> the message and any copies. >>>> > >>>> Ce courriel est destiné exclusivement au destinataire mentionné en titre >>>> et peut contenir de l'information privilégiée, confidentielle ou >>>> soustraite à la communication aux termes des lois applicables. Toute >>>> divulgation non autorisée, toute reproduction ou réacheminement est >>>> interdit. Si vous n'êtes pas le destinataire de ce courriel, ou n'êtes >>>> pas autorisé par le destinataire visé, ou encore, si vous l'avez reçu >>>> par erreur, veuillez le mentionner immédiatement à l'expéditeur et >>>> supprimer le courriel et les copies. >>>> >>>> __________? >>>> >>>> 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 >>>> >>>> >>> >>> __________� >>> >>> 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 >>> >> >> __________� >> >> 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 >> > > __________� > > View the list's information and change your settings at > //www.freelists.org/list/jawsscripts > > -- Change the world--1 deed at a time Jackie McBride Scripting Classes: http://jawsscripting.lonsdalemedia.org homePage: www.abletec.serverheaven.net For technophobes: www.technophoeb.com __________� View the list's information and change your settings at //www.freelists.org/list/jawsscripts