Hi Rick,
I create the WE object for those projects, the first thing to do in terms
of getting the screen reader up and running. My games use 2 different
techniques because the Trek game I leave the option for screen display, thus
have to use a Python module for exposing the keyboard. Where the Battelship
uses events embedded in Python and don't use any screen display, thus I am
allowed to use keyboard events of a higher gaming level.
The trek game I wanted sighted people to see a simple grid where in
Battleship everything is described.
As I had mentioned in my last email posting before getting this one, he is
correct in using C++ for one reason, it is easier to get to the even, but
requires a lot more detail, which is a pain.
The biggest problem in any scripting language is getting the memory
mapping, the structure of that map, and plugging in the numbers required by
that event. Python has nice structures, but as he says, it is slower because of
the level at which Python runs.
I wrote but have not posted a Clipboard program/app that takes the data
type from the clipboard and if it is a file listing, I can get the list of
files you have copied to the clipboard, including the path, without copying or
moving the file. Which might come in handy when you only what the names from a
folder or path. The key in getting this information is knowing the structure of
the data and where it is located.
As a Python user I had worked with the man who wrote most of the UI hooks
or objects for the DOS internal commands. There was an issue of exposing the
MSAA and he was amazed that it did not work with the WE model...even though he
exposed that event...
I will take a closer look at the events and see what I come up with. Some
can come from the WMI and what to call; as I did for the Uninstall app; which
also needs an upgrade for I changed delays into timer events so as not to slow
down initialization of all the WE apps. Those events are the Async I am talking
about to get UI events so you can move on to the next event without holding up
the system.
To be honest, I have not played much with objects inside the DOM, but that
is going to be my next project to expand on the "Breaking News" app. But most
are standard and easy to control. I have found little difference in most web
pages I have listed in my app tree and I have over 50 web sites I look at and
most work in terms of getting text, but some purposely want an event triggered
before exposing there data for tracking and logging in issues; but some are
global paths used and I do miss some of them and base most on a original path.
HTML5 does use objects more and just have not played with them yet, but like
the DOM, you have to know the default paths for some of the stuff. Playing
videos and such are much easier using the HTML5...
Time to get working outside now for fall is rapidly approaching and want to
get my so called house work down, at least outside work done before the snow
flies...
Bruce
Sent: Monday, September 08, 2014 7:53 AM
Subject: Bruce And Next Conceptual Modeling
Hi Bruce: After scraping you get into the domain of actually envisioning how
a screen reader might work to try and emulate some features programmatically.
I was talking to a few folks over the weekend about this.
Here is a good response from one of the fellows who worked on NVDA Project.
It gives the 5k overview of what they work with, notice he mentions scraping
and parsing what is what you are doing in your app.
Many of the other technical items and structures are handled by WE for the
most part and some exposed in the WE Object Model.My stumble in my last attempt
at an "External Script" involved low-level handling of keyboard input and the
fact the WE model didn't get at the dom code I needed to make the Forms
Designer in vb.net read while native, managed uia actually, did expose the
objects in the designer.
Anyway, I thought you might get a kick out of seeing the 5k overview of how
the NVDA Screen Reader is viewed by a Programmer and how he envisions how some
of the
technicals fit together from his viewpoint.
Note I don't use NVDA, never worked on it and don't agree with everything he
says - he is just another programmer but the keywords and technologies might be
of interest as you develop your programming / scripting skillsets.
Hi Rick,
About the purpose of a screen reader versus self-voicing
applications: in my opinion, it is better to create something
that can provide access to majority of appications, with the rest
coming in as external modules conforming to a set of screen
reader's API. Just as human readers should be flexible in
handling various document types and conventions, a screen reader
should be quite flexible to handle most of the controls found in
many applications and emerging standards. There's a saying in
programming circles I like: do it right the first time, then
worry about corner cases later. I believe we can apply this
concept to screen reader technologies: first get it to read what
can be read, then worry about corner cases (inaccessible
controls, apps, standards, etc.) later as time goes by.
Having worked on the NVDA project like some of us on this list, I
can confidently say that developing a screen reader is a major
undertaking. At a nutshell, a screen reader is a program which
interprets elements of the user environment in ways which allows
blind and visually impaired computer users to use the environment
effectively. This process, involving various modules (see below)
could take months to years to perfect, and the developer of a
screen reader must be a visionary willing to learn today's
standards and provide a way to interpret these standards (ARIA,
User Interface Automation, threads, etc.) for the benefit of his
or her screen reader users.
Taking NVDA as an example, a screen reader is composed of various
modules which must (and I emphasize the word "must") work
together to gather, interpret and present user interface
elements. These modules include, in order of importance, remote
code communicator and injector (used to retrieve useful UI
elements from programs), screen scraper and parser, accessibility
API handlers and responders (MSAA, UIA, JAB, etc.), input
processors (keyboard, braille display, touchscreen, speech
recognition, etc.) and output presenters (speech, braille,
motion, etc.). In addition, a screen reader, being a privileged
software, must be aware of mechanisms provided by the operating
system for security, memory access, network connectivity, input
hooks, performance (UI presentation and IPC (inter-process
communication)) and so on, as well as being sensitive to changes
in UI environments across OS versions and among different
accessibilityAPI versions, implementation and compliance by the
OS and third-party applications (and in case of websites,
compliance to web standards and guidelines on accessibility to
ease the work of the screen reader in presenting a site's
content).
As for coding such a software, many would use C++ or another
compiled language for speed, although some components might be
coded in a scripting language like Python for ease of maintenance
and extensions at the cost of performance. For a screen reader
like NVDA which uses C++ for low-level communications subsystem
(NVDA Helper) and Python for the high-level code, it is important
to decide which component must be run at full speed and which
components should easily was extendable by developers and users.
Although many users would want a screen reader to be a
performance champion in UI presentation, many would point out
that due to technology in use (not just the screen reading
algorithms, which most are parsing and communications, but also
the framework in use and for compatibility) would prevent the
screen reader from taking advantage of latest capabilities of
operating systems, hardware features and programming models and
interfaces.
I mention NVDA a lot here because its source code has a lot of
potential to be studied in academia in developing better screen
reading algorithms and to provide a historical (and active)
example of how a screen reader is developed.
Hope this helps.
Cheers,
Joseph
Now, Bruce, I hve delt with most of the above technical at one time or
another so understand what he is trying to say but I don't agree with some of
it for a "Targeted" project limited to asingle product like Internet Explorer
or say Visual Studio or Sql Management Studio.
I don't believe in ReInventing the wheel so if I ever do something along
these lines I would either work in an existing scripting language or create a
very, very limited project either self voicing or using one of the existing
screen readers api capabilities.
Anyway, thought youd get a kick out of seeing the stuff the screen reader
guys deal with on a daily basis and might get some ideas for future research if
interested.
I don't use NVDA as I find WindowEyes usually
adiquit and use narrator if needed to supplement it where narrator will help.
Good Hunting:
Rick USA
---
This email is free from viruses and malware because avast! Antivirus protection
is active.
http://www.avast.com