Good luck. I have never scripted jaws, yet, so cant do more than comment on general UIA things and even then it has been a long time since I mucked with them. UIA is quite complicated to try and work with compared to using the native jaws hooks, my experience from scripting native UIA in WindowEyes. If you can do what you want without digging into UIA I think it will have a much less steap learning curve. I'm out guys - dont have anything else unless, until, I start using jaws and looking at how it may be scripted.
Rick USA----- Original Message ----- From: "Kerneels Roos" <kerneels@xxxxxxxxx>
To: <program-l@xxxxxxxxxxxxx> Sent: Thursday, June 05, 2014 3:37 PMSubject: [program-l] Re: How to get JAWS to act on cursor movement in VS 2013 if the movement is caused by something other than the arrow keys.
Thanks a lot James, Rick, Soronel, really appreciate your comments and suggestions.I suspected this, that jfw for the vs scripts respond to keyboard keys in order to know when to voice - at least in the editor window - but then it must also tie into UIA events because it is able to voice more complex and involved messages that are not triggered by any keyboard input, like to announce that the build completed (for example).I'll try to handle the event you mentioned Soronel, and look for the CaretMoved event in the FSDN - should probably take a step back and study jfw scripting a bit first since it's not consistent with normal programming terminology: script, script, what is a script - it's all a script actually in my mind :-) Actually, it does get compiled, so it's not technically interpreted and thus not the same as a python or perl or php script. So in jfw scripting terminology, a script is a method that fires on some keyboard input?Is the script with this starting lines the latest and greatest for vs: ;Copyright 2011-2013 Freedom Scientific, Inc. include "hjconst.jsh" include "hjglobal.jsh" include "Visual Studio 2010.jsm" include "Visual Studio 2010.jsh" use "Visual Studio Internal.jsb" globals int g_vsInCompletionsList, int g_vsDontSpeakNextFocusChange, ; We track based on a concatenation of VSEdition and major version collection g_vsScriptsHaveAlreadyLoadedThisJawsSession On 2014-06-05 05:29 PM, Soronel Haetir wrote:Right, jaws mostly operates by hooking the keyboard and then firing scripts rather than by responding to accessibility events. One thing to note, as far as I am aware the MSAA to UIA bridge does not even try to fire UIA events when the various properties change (name, description etc). The UIA model is quite powerful when a program implements it (correctly) but there are enough that don't that it simply is not a particularly good route for general screen reader operation. On 6/5/14, RickUSA <ofbgmail@xxxxxxxxx> wrote:Hi Again Soronel: After ReReading your posting I understand what you ment.The keyboard hooks you are talking about are JAWS watching for Keyboard events like a key press and act on that in those cases where they aredefined and execute a script or block of code based on the press of a keyrather than on monitoring actual UIA events. Thus tieing into these events, likely available in the JAWS scripting language, would give a higher level access to handling these pre-defined events in accordance with existing JAWS operations. Sorry I missed that, guess I needed this second cup of coffee - smile. Rick USA ----- Original Message ----- From: "Soronel Haetir" <soronel.haetir@xxxxxxxxx> To: <program-l@xxxxxxxxxxxxx> Sent: Wednesday, June 04, 2014 6:26 PM Subject: [program-l] Re: How to get JAWS to act on cursor movement in VS 2013 if the movement is caused by something other than the arrow keys.Actually, as far as text movement goes I am pretty sure it is the selection changed event you would need to watch if that is the route you want to use. UIA treats normal cursor placement as a 0 length selection. But that also requires that the target program raise the appropriate event. I am pretty sure that is why FS uses keyboard hooks with fired scripts rather than relying on accessibility based events, there are enough programs that don't raise all the needed events in all the needed places that you would have to hook the keyboard and do it on the front end anyway so there isn't much of a point in doing all the work twice. On 6/4/14, RickUSA <ofbgmail@xxxxxxxxx> wrote:Also, UIA scripting has allot of events you can watch for and tie into like change in focus.On a focus change you could perhaps test to see if you want to move theobject and if so move it, else skip it. Rick USA ----- Original Message ----- From: "Soronel Haetir" <soronel.haetir@xxxxxxxxx> To: <program-l@xxxxxxxxxxxxx> Sent: Wednesday, June 04, 2014 4:20 PMSubject: [program-l] Re: How to get JAWS to act on cursor movement in VS2013 if the movement is caused by something other than the arrow keys.The standard windows controls all implement UIA. Also programs thatare written using the WPF have UIA capability (although the developersoften do not do the work to actually associate the needed text with the controls, the control navigation itself is present). There is also a bridge that translates programs that only implement MSAA to a UIA model, but with much less information than UIA is able since MSAA simply doesn't provide as much. For programs that have created their own controls or frameworks it is entirely program dependent as to whether accessibility information is available, but there also aren't a lot of such programs since implementing lots of self-drawing window classes is not a trivial task, especially when dealing with drawing text. On 6/4/14, Homme, James <james.homme@xxxxxxxxxxxx> wrote:Hi,Is UIA in use generally in Windows controls themselves, or is its useapplication-dependent? Thanks. Jim -----Original Message----- From: program-l-bounce@xxxxxxxxxxxxx [mailto:program-l-bounce@xxxxxxxxxxxxx] On Behalf Of Soronel Haetir Sent: Wednesday, June 04, 2014 11:32 AM To: program-l@xxxxxxxxxxxxxSubject: [program-l] Re: How to get JAWS to act on cursor movement inVS2013 if the movement is caused by something other than the arrow keys.The main thing that makes scripting visual studio tricky is limiting your scripts to just the parts of the interface that you are interested in. The actual UIA objects work very well. And something to keep in mind about scripting SQL Server Management Studio is that it is actually built on the visual studio isolatedshell so I would expect scripting that to be quite a bit easier, sinceyou would not have nearly as many potentially colliding UI areas to eliminate. On 6/3/14, RickUSA <ofbgmail@xxxxxxxxx> wrote:Hi: Cant thelp with that but are you scripting Visual Studio?I tried it using WindowEyes Scripting language and even UIA but foundit quite complicated. If scripting for jaws how well does JAWS Scripting language work to scriptVisual Studio? I am thinking of if scripting of Sql Server and otherMS packages would be possible in JAWS. Rick USA ----- Original Message ----- From: "Kerneels Roos" <kerneels@xxxxxxxxx> To: "Program-l" <program-l@xxxxxxxxxxxxx> Sent: Wednesday, June 04, 2014 3:45 AMSubject: [program-l] How to get JAWS to act on cursor movement in VS2013 if the movement is caused by something other than the arrow keys.Hi there. I was wondering if anyone here could perhaps help me with a JAWS scripting issue. In VS 2013, when the cursor in the code editor moves, butthe move is caused by something other than the usual move actuators,then JAWS seems to know that the cursor moved if I press Alt+Del, but nothing is spoken when the move happens. Alt+Del reveals that the cursor is the PC cursor, and the line number, hence JAWS is aware of the line change, but no actual content is voiced when the line change via a cursor movement due to something other than the arrow keys.For example, if I move the cursor with the arrow keys, then each newline or character or whatever is read properly, but if I move the cursor through say a plugin VsVim then JAWS can detect that the cursor moved, but it does not speak what it should - almost as if speech output is only tied to the conventional move actuators - arrow keys in this case. VsVim would move the cursor when the focus is in the code editor, whenVsVim is in normal mode (by pressing esc key), and one of the VsVimmovement chars is hit (j for down, k for up, h for left, l for right) - for example.I had a look at the standard JAWS scripts from FS for VS, and thereisquite a bit of code there, so this might also be interfering in someway. I noticed that this event:either does not fire or is suppressed by other code in the scripts.So, my question is this:1. Are there any other events I could handle, events that fire whenthe PC cursor is busy editing something and moving around. 2. How can I detect that the focus is in the code editor or output window? 3. Are there some settings in JAWS I could give a try? I have noticed about a year before that Braille actually keeps up with the actual cursorposition, no matter if the cursor position changed due to the usualposition changers (arrows) or due to something else. At the time I was unable to cause all Braille to be read out, which might be an option, but it would be nice to have it working without requiring a Braille display. Any other helpful hints or info would be much appreciated. I don't know too much about JAWS scripting in general, and I don't really have theresources to embark on a full study of this since usually all workswell enough. Regards, Kerneels -- Kerneels Roos Cell: +27 (0)79 696 6038 Tel: +27 (0)811 2108 LinkedIn: http://za.linkedin.com/in/kerneels Skype: cornelis.roos ** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq-- Soronel Haetir soronel.haetir@xxxxxxxxx ** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq ________________________________ This e-mail and any attachments to it are confidential and are intendedsolely for use of the individual or entity to whom they are addressed.If you have received this e-mail in error, please notify the sender immediately and then delete it. If you are not the intended recipient, you must not keep, use, disclose, copy or distribute this e-mail without the author's prior permission. The views expressed in this e-mail message do notnecessarily represent the views of Highmark, its diversified business,or affiliates.-- Soronel Haetir soronel.haetir@xxxxxxxxx ** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq-- Soronel Haetir soronel.haetir@xxxxxxxxx ** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq-- Kerneels Roos Cell: +27 (0)79 696 6038 Tel: +27 (0)811 2108 LinkedIn: http://za.linkedin.com/in/kerneels Skype: cornelis.roos ** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to** program-l-request@xxxxxxxxxxxxx with the Subject:- faq
** To leave the list, click on the immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ** If this link doesn't work then send a message to: ** program-l-request@xxxxxxxxxxxxx ** and in the Subject line type ** unsubscribe ** For other list commands such as vacation mode, click on the ** immediately-following link:- ** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ** or send a message, to ** program-l-request@xxxxxxxxxxxxx with the Subject:- faq