Re: Looking for Jaws script writing user group


Paul, to add to your reply, and not to discourage anyone from tackling
the task of scripting for JAWS, but I would like to know your thoughts
if you agree (or disagree, and why) with the below note I saved from
someone who is knowledgeable about this stuff...

"... requirements for scripting. The consensus was that screen reader
scripting requires some knowledge of programming that goes beyond
conditionals, such as variables, and in some cases, loops and functions.
In the case of JAWS scripting, you don't need to know about what classes
and objects are.

To clarify a few things:

* The language used to script JAWS is technically called an "imperative"
language. That is, you would give JAWS things to do, and if things go
well, it'll do what you've requested.

* The language is also "procedural', meaning you'd write procedures
(code contained in functions) to let JAWS perform certain things. Not to
be confused with "functional programming" where you treat functions as
variables and objects.

* Most of the building blocks of scripting is contained in a few global
files, the best known being default.jsb which defines default scripts
for commands.

A script for a program or for a certain situation builds on top of
default commands and behaviors. There is a disadvantage to this model:
if a script needs to modify default behaviors or commands and the
modification must apply everywhere, one must modify default files.
Imagine if multiple scripts are trying to do that, and the result is a
mess of code blocks (groups of code) that can sometimes conflict. This
may have been resolved to some extent in newer versions.

* Scripting for JAWS requires that you know a few terms, namely handle,
script, function and so on.
A handle is an opaque reference to an object, such as a window, a
thread, a file and so on. For script writers:
a handle is a reference to an element on screen, and this is extensively
used to query information about a control and manipulate it.
A function is a code block that performs some things when it receives
zero or more parameters or input data (sometimes called arguments),
optionally returning something so other code blocks can use whatever it

A script is a function that is attached to a command such as pressing
certain keys on a keyboard, manipulating controls on a braille display,
finger flicks on touchscreens and so on.

* A script must be compiled before use.
Going through scripts one line at a time without being compiled (called
"interpreting") is slow; on the other hand, compiling source code to a
format that the target machine understands (the computer or software
that'll eventually run your code) results in superior performance
(well, not really unless you tweak it to run better and faster, and no
compiler (or for that matter, interpreters and script engines) can
produce very optimized code at this time; doing so would require long
compilation time, human input and so on)."

-------- Original Message --------
From: Paul Martz [mailto:skewmatrix@...]
Sent: Monday, Aug 14, 2017 10:45 AM EST
Subject: Looking for Jaws script writing user group

I looked into learning this a while back. I'm a former professional
software developer, so I figured it would be a cinch.

Unfortunately, I discovered that in order to do anything of substance
with JSL (JAWS scripting language), you needed a degree of proficiency
in programming Windows user interfaces - windows and classes and things
like that. That is a proficiency I never developed. As a result, I never
pursued JSL beyond the "tinkering" stage.

Best of luck to you with this.


Join { to automatically receive all group messages.