Hello Geoff, I just started learning programming, still at elementary stage. I?m using HotSpotClicker for the first time and I?m facing some problems. I need an assistance. I?m using Jaws 13 professional on a Dell studio laptop; Win 7, 32 bits. My application has a blank jss file. I copied the Hsc connection code for a blank jss and pasted as follows: use "HotSpotClicker.jsb" Void Function FocusChangedEvent (handle FocusWindow, handle PrevWindow) HSCFocusChanged (GetWindowname (GetTopLevelWindow (FocusWindow))) ; now call the version in default.jss. FocusChangedEvent (FocusWindow, PrevWindow) EndFunction int Function HandleCustomWindows (handle hFocus) if (HSCCheckForPrompt (hFocus)) then ; a prompt exists for this window ; if you specify a processing function for the prompt, it can say the window contents. ; So we are done. return(1) ; indicate that we took care of it. Endif ; include any other logic you need for other purposes. ; return 1 if you don't want jaws default processing to do any more speaking. return(0) ; means we did not handle this window, so jaws should take care of it itself EndFunction I assigned a hot spot to a button and it works fine but When I closed and reopened the application, I got an error message ?window not foun, hot spot failed?. Also, when I tried to creat a prompt, Igot the following message: ?The function which detects focus changes, HSCCheckforPrompt, does not appear to be activating as your application focus moves around. This function needs to be called from your application script file. Write a function in your script file that looks like this: int Function HandleCustomWindows (handle hFocus) if (HSCCheckForPrompt (hFocus)) then ; a prompt exists for this window ; if you specify a processing function for the prompt, it can say the window contents. So we are done. return(1) ; indicate that we took care of it Endif ; include any other logic you need for other purposes ; return 1 if you don't want jaws default processing to do any more speaking return(0) ; means we did not handle this window, so jaws should take care of it itself EndFunction You can copy and paste the above example as a starting point. JAWS will automatically call this function when focus changes. Press escape to close this message? I did as instructed above but still no luck. With best regards, Godwin Adoyi -----Original Message----- From: jawsscripts-bounce@xxxxxxxxxxxxx [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Andre Williams Sent: Thursday, November 17, 2011 4:03 AM To: jawsscripts@xxxxxxxxxxxxx Subject: [jawsscripts] Re: Easier way of writing scripts Regarding HotSpotSlicker... This message alone has tons of great info! Thank you tremendously Jeff for taking the time to convey this information. I'm gonna give Jackie's suggestion a shot first and hopefully I will get some positive results. If not I'll try the more automated HotSpotClicker utility and hopefully it will give me a better idea as to what is happening in Jaws' brain. By the way, does anyone know what programming language was used to write jaws? A-W ----- Original Message ----- From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx> To: <jawsscripts@xxxxxxxxxxxxx> Sent: Wednesday, November 16, 2011 7:18 PM Subject: [jawsscripts] Re: Easier way of writing scripts HI. I was fortunate enough to be in on the ground floor of significant testing/development of hsc with Jim Snowbarger, one seriously compitent scripter in my view, back in 2005/2006, and from my understanding, that was exactly it's purpose! As Christopher highlights it below. I had *exactly* the same desires as A W had, and somehow stumbled upon this app that Jim had constructed, in it's very early stages. And got sooo excited at what I saw were it's possibilities, that I contacted him to see if i could inspire further development/extension. and Jim graciously responded! ... yeah. it turned into a bit of a monsterously feature-rich incredibly funky tool! Unfortunately, I kinda moved out of the music industry several years back now, where the applications we wanted to use, were sooo jaws unfriendly, that hsc really became an essential tool for being able to access/drive some of the pluggins we wanted to use in that environ, to facilitate locating/clicking in specific areas on the often totally graphical, and thus blank to jaws cursor, front-ends of these things. So unfortunately I've been now several years out of the hsc headspace. so am far less useful now as to it's day-to-day operation/state, than I would've been back in 2006. Like most software, my oppinion is that it's got it's learning curve, and quirky bits that take a bit of getting one's head around, But, having now delvved into more scripting language than I knew back in 2005 when I first started with Jim on this amazing tool, I still think it's caveats are simpler to learn to navigate, than the raw scripting language itself, for solving the types of problems your wanting to solve Andre. So, in other words, I'd personally encourage you to dig into this tool, if your interested in automation with custom keystrokes within jaws, which it sounds like you pretty much are. It doesn't get talked about up here much, because the real scripter types, who know how to use the language, obviously prefer to utilize their individual functions/script commands, to specifically meet the requirements of each situation, as you heard doug describe. But, for esssentially non-programmery types, who want a menu driven front end first, to then be able to easily tweak the resultant hotspot definition as needed afterwards, and who can still follow basic logic, I fully believe hsc is an incredibly useful and much needed mid-ground approach. And easier, in my view, than getting one's head around gobs of functions in order to do very simple tasks, as Andre points out. You have no doubt already read comparison's with hsc and frame manager, in the documentation Andre. It's worth thus pointing out, that although hsc does significantly, significantly more than frames manager ever did, and in my view has a much easier way of manually editing each line of code that it generates than the frames manager definitions, within the hsc definition editor, reached after instalation, with AltControlShiftF4, The builtin frames manager in jaws itself, can also be made to do some of the things your talking about. particularly if the text of the stuff you wanna click on, is already visible to the jaws cursor, and thus the FindString type commands, that presumably both frames manager and hsc functionality both employ, can be used to locate the stuff you wanna click on. So just to make you aware of that. And, of course because frames manager does less, it's arguably a bit simpler to learn. I started with that myself. But, it has it's limitations, and I believe hsc is just a fantastic tool for the types of customizations your talking about. I can remember/will tell you that The single most primary caveat, that most readily, "breaks," hotspot clicker from successfully/reliably clicking on it's assigned, "spot," is, insufficient understanding/handling, of the part of the spot creation wizard which asks the user to remove dynamic information from the titleBars of up to, oh goodness, maybe as many as 4, different window types, that it might deem relevant to the spot your creating. I.e. Application window, TopLevel Window, RealWindow, and CurrentWindow. This is called the, "window validation criteria." Frames Manager has it as well. And, although to the uninitiated, it can initialy appear as just an irrelevant pain that one would prefer not to have to deal with, as it's name suggests, it's actual purpose is, to help insure, that one doesn't just perform a, blind, mouseClick, at a given spot, without first seeking to validate that the environment that was present when you defined the spot, is still sufficiently there, to warrant a fair shot at clicking there. , that the result you initially defined the spot to bring about, at spot definition time, is still gunna be valid, to bring about again, at spot activation time. i.e. when you hit your hotkey for the click. So, it's kinda a good thing, but it doesn't appear like that when you first get into hsc. However, of course, the other side of this spectrum that your juggling against, is that if the environment validation criteria, is left too strict/tight, then the least change in any one of the windowNames, which might not at all mean that your spot has become inOpperable, will invalidate the match criteria, and hsc will think it's no longer safe to click there, and will prevent you from doing so. bringing a, "Donk," sound from your computer, and the dreaded "hotspot failed," message. and if you leave all your windowNames validation criteria totally unedited, as the hotspot wizard first presents them to you, almost certainly your spot will fail the very next time you open your app, since many legitimate changes can happen in those window names, which may not invalidate your spot from doing what it was designed for. If that makes sense. I'm not very adept at explaining complex concepts and making them simple to understand. I apologize for this. So Now the thing is, it's pretty crucial, to remove anything from each of these window types, during the hotspot creation wizard. This is particularly relevant for the first spot you define, since it tries to, "learn,"/remember, the answers given in the definition of the first spot in a given environment, if it finds similar criteria in subsequent hotspots, defined in that same environment. notice I'm using the term, "spots," and, "hotspots," interchangeably here. They mean the same thing. now there's two primary caveats to be aware of in doing this. one simple one is, that you need to watch that your sometimes quite lengthy windowName/title, might extend over two lines, rather than one. so make sure you utilize control+Home and control+end, rather than just home and end, whilst navigating the windowName your trimming. The Second slightly more complex problem, is, of course, that you may not necessarily really know, what criteria is going to remain constant, and what not, in your windowNames, as you are messing around in your application. Thus making it rather difficult to really know, what to remove, and what to leave alone. So, my basic rule of thumb for newbys at this, is, to remove anything from these window names, that you aren't absolutely confident will be there, during all the times you want your click to actualy work. And if your unsure, then delete whatever your unsure of. e.g. I almost always recommend deleting the entire CurrentWindowName, sometimes abbreviated in hsc to just, WindowName, because I've found that this can change so readily, that it often provides more headaches than joys, to leave anything in there as part of validation criteria. Secondly, if you are wanting hsc to look for a particular word/phrase to insure greater reliability for your click spot, if such is visible to jaws cursor, then after obviously placing the jaws cursor at the spot you want to define, and over one of the words, activate the Graphics/Words hotspot creation wizard, using altControlShiftG, rather than the standard AltControlShiftA, wizard. This will then take into account the word or graphic name which may be under the jaws cursor, and ask you questions about how you'd like hsc to treat this. usually searching from topDown, is best, but there may be situations where the spot is near the bottom of a window, that you'd prefer hsc to search bottom up, which you can also choose. Tip: although the wizard may often ask you only about a single word, you can define this to be a longer phrase after the fact, by delving into the definition for that spot, after completion of the wizard. You'll find a whole bunch of after-the-fact twekable stuff in there, which I'm sure the rather comprehensive documentation will explain in detail for you if desired. oh there's just a million and 1 things I could rave on and on about, in the mastering of hsc. But I think that should do for starters. I will just conclude though, by saying that integration of hsc into the internet explorer environment, is not nearly as simple, as just using it in a local application. for which it was initially designed. for obvious reasons. and this is treated a little in the documentation. There's a bunch of other things you need to be aware of, when doing spots in an app such as internet explorer, given that it can host just sooo many webpage environments, all potentially requiring different validaition criteria, and maybe a separate hotspot set for each page, which you'd then ultimately like it to load automatically when it detected that webpage. rah rah rah. So I'm not going into that one now. happy clicking. And perhaps ask your questions one by one, as you delve into hsc more as you try things. if you decide it's something you'd like to learn to master. just don't get too frustrated if things don't work out as you expect straight away. like all software really, specially for us, it's a slower learning curve to getting the result you want, than you wish it was. But, I can tell you from personal experience, I think hsc is a very very funky tool, the stuff it can do, once you learn how to drive it well. and realy dig into it. I believe it can permit blind user access to drive stuff that would be almost impossible without it, in some applications. Geoff Chapman. ----- Original Message ----- From: "Christopher Chaltain" <chaltain@xxxxxxxxx> To: <jawsscripts@xxxxxxxxxxxxx> Sent: Thursday, November 17, 2011 6:31 AM Subject: [jawsscripts] Re: Easier way of writing scripts >I wonder if Hot Spot Clicker from http://hotspotclicker.org/ will help > with Andre's situation. I'm not sure, since I haven't used it myself, > but it looks like it's purpose is to make clicking on different areas of > the screen easier and without having to resort to scripting. > > On 16/11/11 13:20, Doug Lee wrote: >> Your frustration is understandable, but the basic problem is that >> application developers use many different methods of displaying the >> various parts of their applications, and each method can have >> different accessibility characteristics. In short, each type of >> control in an application can require its own accessibility solution. >> Freedom Scientific writes solutions to what it considers the most >> common control types, but they simply can't predict or manage all >> possible situations that happen out there. Since JAWS is scriptable, >> others can help out by coding for more situations; but still, more >> accessibility issues exist than there are capable hands to address >> them. >> >> So in summary, the fact that JAWS can't natively handle all the >> applications you may use is as lamentable as it is inevitable. >> >> On Wed, Nov 16, 2011 at 11:09:41AM -0800, Andre Williams wrote: >> Yes, I think this is the problem with all this scripting business. Look >> at >> the amount of stuff you listed which one has to learn to get started. If >> this is your work then this is something that has to be learned, but if >> you >> are coming at this from the perspective of the regular user needing >> simple >> script features not already existing in jaws, then one must now take >> hours >> and hours of personal time to learn this stuff as well as paying for >> tutorials and stuff. I just want to make jaws quickly click on a tab on >> my >> screen, but it appears I have to learn tons of scripting first. I am not >> directing my comments at you Jacky, I'm only conveying my frustration >> with >> what seems like a process that should not be this difficult. I already >> paid >> lots for jaws so I don't plan on continuing to sink more money into it. >> >> Just so I have a better perspective of the investment of time, what will >> go >> into writing a script that will make jaws click on a specific tab with a >> press of a hotkey? I've already studied the layout of the screen a bit >> and >> found that the tabs don't move, nor do the other items I want to access >> with >> hotkeys. Can this type of script be written easily, or do I have to learn >> all the things Jacky suggested? >> >> A-W >> >> ----- Original Message ----- >> From: "Jackie McBride" <abletec@xxxxxxxxx> >> To: <jawsscripts@xxxxxxxxxxxxx> >> Sent: Wednesday, November 16, 2011 10:49 AM >> Subject: [jawsscripts] Re: Easier way of writing scripts >> >> >> Andre, there are many ways, depending on the app. Moving to a window >> handle or control ID, doing a findstring(), Looking for a particular >> window class & control ID combination, going thru the window or object >> hierarchy--those are just a few for starters. I can't really be more >> definitive because, as I said, it really depends on the application & >> how it's structured. >> >> I'd recommend u study the basics of scripting manual included in the >> Jaws help topics, as well as some of the jaws scripts which are >> located in the settings/enu directory of your jaws folder. My >> scripting 101 materials are also available for purchase at: >> www.screenreaderscripting.com >> if u feel the other materials aren't sufficient to meet your needs. >> >> On 11/16/11, Andre Williams <andre.williams.1965@xxxxxxxxx> wrote: >>> HI all, >>> >>> Does anyone know of a more elegant manner of writing a script than >>> specifying every command? I'm looking to refine the accessibility of >>> WordWeb >>> a bit more and would like to not have to use script text such as >>> page up >>> page up >>> home >>> next word >>> next word >>> say word >>> >>> Is it possible to somehow take the jaws cursor to a specific icon or >>> point >>> on the screen then hit a hotkey to tell Jaws that this is the object I >>> want >>> to use in my script? >>> >>> For example, WordWeb has several tabs. One of these tabs is used to read >>> the >>> Wikipedia article for the word one is wanting to define. I would like to >>> use >>> the jaws scripting functions or keyboard commands to write a script that >>> makes jaws jump directly to this desired Wikipedia tab object without >>> all >>> the PageUp (), Home (), NextWord () commands. >>> >>> If this is possible, please help a brotha out and let me know how this >>> can >>> be done. >>> >>> A-W >>> >>> __________??? >>> >>> View the list's information and change your settings at >>> //www.freelists.org/list/jawsscripts >>> >>> >> >> > > > -- > Christopher (CJ) > chaltain@xxxxxxxxx > __________� > > 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