Quantcast

first attempt to make a program accessible

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

first attempt to make a program accessible

Travis Siegel
I'm finally taking a stab at making a program accessible.  The chat
program that comes with steam is called brainblast omega chat, and NVDA
won't read anything on the screen, it just thinks it's blank.  According
to the helper information, it should be readable (since it's focusable,
scriptable, and has window ids). I'm not sure what to do though.  I
attempted to make it accessible just by copying the thunderbird script
to the brainblast one, since it doesn't seem to do a whole lot
different, but this didn't help.  I'm guessing it's because I need to
change window names or handle ids or something similar.  Is there
someone who can take a look at the information I get from NVDA-F1, and
coach me on what I need to do to attempt to get NVDA to read the chat
window?

NVDA-F1 information is as follows:


INFO - __main__ (17:10:33):
Starting NVDA
INFO - core.main (17:10:33):
Config dir: C:\Users\Travis\AppData\Roaming\nvda
INFO - core.main (17:10:33):
NVDA version 2016.4
INFO - core.main (17:10:33):
Using Windows version 6.3.9600 workstation
INFO - core.main (17:10:33):
Using Python version 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016,
15:19:22) [MSC v.1500 32 bit (Intel)]
INFO - core.main (17:10:33):
Using comtypes version 0.6.2
INFO - synthDrivers.espeak.SynthDriver.__init__ (17:10:34):
Using eSpeak version 1.48.15  16.Apr.15
INFO - synthDriverHandler.setSynth (17:10:35):
Loaded synthDriver espeak
INFO - core.main (17:10:35):
Using wx version 3.0.2.0 msw (classic)
INFO - braille.initialize (17:10:35):
Using liblouis version 3.0.0
INFO - braille.BrailleHandler.setDisplayByName (17:10:35):
Loaded braille display driver noBraille, current display has 0 cells.
INFO - brailleInput.initialize (17:10:35):
Braille input initialized
WARNING - core.main (17:10:35):
Java Access Bridge not available
INFO - _UIAHandler.UIAHandler.MTAThreadFunc (17:10:35):
UIAutomation: IUIAutomation3
INFO - core.main (17:10:37):
NVDA initialized
INFO - globalCommands.GlobalCommands.script_navigatorObject_devInfo
(17:15:47):
Developer info for navigator object:
name: u'BrainBlast \uff65\u03c9\uff65 - Chat'
role: ROLE_UNKNOWN
states: STATE_FOCUSABLE, STATE_FOCUSED
isFocusable: True
hasFocus: True
Python object: <NVDAObjects.IAccessible.ContentGenericClient object at
0x04C866D0>
Python class mro: (<class
'NVDAObjects.IAccessible.ContentGenericClient'>, <class
'NVDAObjects.IAccessible.IAccessible'>, <class
'NVDAObjects.window.Window'>, <class 'NVDAObjects.NVDAObject'>, <class
'baseObject.ScriptableObject'>, <class 'baseObject.AutoPropertyObject'>,
<type 'object'>)
description: None
location: (736, 392, 396, 351)
value: u''
appModule: <'appModuleHandler' (appName u'steam', process ID 4504) at
address 4d0c650>
appModule.productName: u'Steam Client Bootstrapper'
appModule.productVersion: u'01.00.00.01'
TextInfo: <class 'displayModel.DisplayModelTextInfo'>
windowHandle: 197448L
windowClassName: u'USurface_271218'
windowControlID: 0
windowStyle: -1777401856
windowThreadID: 4540
windowText: u'BrainBlast \uff65\u03c9\uff65 - Chat'
displayText: u''
IAccessibleObject: <POINTER(IAccessible) ptr=0x460ced0 at 4cd6260>
IAccessibleChildID: 0
IAccessible event parameters: windowHandle=197448L, objectID=-4, childID=0L
IAccessible accName: u'BrainBlast \uff65\u03c9\uff65 - Chat'
IAccessible accRole: ROLE_SYSTEM_CLIENT
IAccessible accState: STATE_SYSTEM_FOCUSED, STATE_SYSTEM_FOCUSABLE,
STATE_SYSTEM_VALID (1048580)
IAccessible accDescription: None
IAccessible accValue: None

Any and all assistance would be greeatly appreciated, as this is my
first attempt, as mentioned above, and I'm not really sure what I'm
supposed to be doing here. :)



---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

James Scholes
Travis Siegel wrote:
> According to the helper information, it should be readable (since
> it's focusable, scriptable, and has window ids).

The fact that a control can gain focus doesn't mean NVDA should be able
to read it.  Most controls with a role of "unknown" are generally
focusable but it doesn't make any difference to the fact that they're
not accessible because NVDA doesn't know what to do with them.  And the
developer information for that particular control doesn't look
particularly promising.

Can you currently read the chat text with NVDA at all, e.g. by using
screen review?  If so, the next step is to work out how you can do that
programatically to make reviewing it a bit easier.  If you can't
currently get access to the text in any fashion, though, then NVDA can't
see it and you'll have to think of a more outside the box solution (if
there is one).

For example: Earlier this year I created an app module for PokerStars.
In the poker table windows, there's a chat history area, and then
graphics to show the cards that have been dealt.  Monitoring the chat
history was relatively straight forward, but there was absolutely no way
that NVDA could see the card information.  Not with screen review,
object nav, anything.  Because the cards were images, not text.  So in
the end, I had to set up a thread to monitor the PokerStars log file,
which does contain information about dealt cards, and then report it
back to the user.  The moral of the story being that if there is no
information on screen that NVDA can make use of, and there's no other
way to get access to the content programmatically, then you can't make
that system accessible with NVDA without help from the developer.

You mentioned Steam, so maybe there is a log file or someone on the
Internet has already found a way to obtain chat history from a third
party program and you can reuse their solution.
--
James Scholes
http://twitter.com/JamesScholes

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

Travis Siegel
It is plain text, but NVDA thinks there's nothing on the screen, it just
tells me blank.  There should be some way for me to tell NVDA it's a
text area, but I wouldn't know how to do that (perhaps I could write a
third-party app to try to grab the text and feed it to the text
synthesizer, but again, I wouldn't know how to grab the text from the
application.  Guess I'll dig around and see if there's some windows
functions that can be called, but if there isn't, then I guess this one
is a wash, but I figured it was worth a try.


On 4/5/2017 6:25 PM, James Scholes wrote:

> Travis Siegel wrote:
>> According to the helper information, it should be readable (since
>> it's focusable, scriptable, and has window ids).
> The fact that a control can gain focus doesn't mean NVDA should be able
> to read it.  Most controls with a role of "unknown" are generally
> focusable but it doesn't make any difference to the fact that they're
> not accessible because NVDA doesn't know what to do with them.  And the
> developer information for that particular control doesn't look
> particularly promising.
>
> Can you currently read the chat text with NVDA at all, e.g. by using
> screen review?  If so, the next step is to work out how you can do that
> programatically to make reviewing it a bit easier.  If you can't
> currently get access to the text in any fashion, though, then NVDA can't
> see it and you'll have to think of a more outside the box solution (if
> there is one).
>
> For example: Earlier this year I created an app module for PokerStars.
> In the poker table windows, there's a chat history area, and then
> graphics to show the cards that have been dealt.  Monitoring the chat
> history was relatively straight forward, but there was absolutely no way
> that NVDA could see the card information.  Not with screen review,
> object nav, anything.  Because the cards were images, not text.  So in
> the end, I had to set up a thread to monitor the PokerStars log file,
> which does contain information about dealt cards, and then report it
> back to the user.  The moral of the story being that if there is no
> information on screen that NVDA can make use of, and there's no other
> way to get access to the content programmatically, then you can't make
> that system accessible with NVDA without help from the developer.
>
> You mentioned Steam, so maybe there is a log file or someone on the
> Internet has already found a way to obtain chat history from a third
> party program and you can reuse their solution.


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

Brian's Mail list account BY
The point is, I think it may look like text to you, but to nvda its not
anything unless its able to figure it out. the fact that you cannot even
read it leads me to believe its just a picture of text.
 The developer needs to have a set of events that firstly mark the area as
something nvda can understand, than then send either the text or at the very
least some kind of text has been updated info somewhere a screenreader can
see it.
 There are lots of bits of software out there like this, sadly.
Do you know what package was used to write it, and is the source available?

No I'm not volunteering, my brain is frazzled enough already.
 Brian

[hidden email]
Sent via blueyonder.
Please address personal email to:-
[hidden email], putting 'Brian Gaff'
in the display name field.
----- Original Message -----
From: "Travis Siegel" <[hidden email]>
To: "NVDA screen reader development" <[hidden email]>
Sent: Thursday, April 06, 2017 1:45 AM
Subject: Re: [Nvda-devel] first attempt to make a program accessible


> It is plain text, but NVDA thinks there's nothing on the screen, it just
> tells me blank.  There should be some way for me to tell NVDA it's a
> text area, but I wouldn't know how to do that (perhaps I could write a
> third-party app to try to grab the text and feed it to the text
> synthesizer, but again, I wouldn't know how to grab the text from the
> application.  Guess I'll dig around and see if there's some windows
> functions that can be called, but if there isn't, then I guess this one
> is a wash, but I figured it was worth a try.
>
>
> On 4/5/2017 6:25 PM, James Scholes wrote:
>> Travis Siegel wrote:
>>> According to the helper information, it should be readable (since
>>> it's focusable, scriptable, and has window ids).
>> The fact that a control can gain focus doesn't mean NVDA should be able
>> to read it.  Most controls with a role of "unknown" are generally
>> focusable but it doesn't make any difference to the fact that they're
>> not accessible because NVDA doesn't know what to do with them.  And the
>> developer information for that particular control doesn't look
>> particularly promising.
>>
>> Can you currently read the chat text with NVDA at all, e.g. by using
>> screen review?  If so, the next step is to work out how you can do that
>> programatically to make reviewing it a bit easier.  If you can't
>> currently get access to the text in any fashion, though, then NVDA can't
>> see it and you'll have to think of a more outside the box solution (if
>> there is one).
>>
>> For example: Earlier this year I created an app module for PokerStars.
>> In the poker table windows, there's a chat history area, and then
>> graphics to show the cards that have been dealt.  Monitoring the chat
>> history was relatively straight forward, but there was absolutely no way
>> that NVDA could see the card information.  Not with screen review,
>> object nav, anything.  Because the cards were images, not text.  So in
>> the end, I had to set up a thread to monitor the PokerStars log file,
>> which does contain information about dealt cards, and then report it
>> back to the user.  The moral of the story being that if there is no
>> information on screen that NVDA can make use of, and there's no other
>> way to get access to the content programmatically, then you can't make
>> that system accessible with NVDA without help from the developer.
>>
>> You mentioned Steam, so maybe there is a log file or someone on the
>> Internet has already found a way to obtain chat history from a third
>> party program and you can reuse their solution.
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Nvda-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/nvda-devel 


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

James Scholes
In reply to this post by Travis Siegel
Travis Siegel wrote:
> It is plain text, but NVDA thinks there's nothing on the screen, it just
> tells me blank.  There should be some way for me to tell NVDA it's a
> text area, but I wouldn't know how to do that

This is a common misconception about creating NVDA add-ons,
unfortunately.  Generally, NVDA is very good at working out what to do
with a control, even ones which have accessibility problems.  That's not
to say that there aren't times when it needs a helping hand, but it's
very rare that simply telling NVDA to look at a control in a different
way will make it accessible.

I'm still not entirely clear, though.  Are you saying that NVDA can read
the chat text/history with screen review or similar?  Or that the window
is completely blank and there's no way to get access to it at all?
--
James Scholes
http://twitter.com/JamesScholes

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

Travis Siegel
Well, it was written with a gui, but there is plain text in the window,
but apparently it's not showing as such.


According to jaws, it's a 3state element (don't know what that means,
that would seem to indicate a button or slider  The jaws information is
as follows:

Window Technical Information:
Control ID  0
Class  USurface_153875
Handle  2295200


That's obviously less information than NVDA gives, but it does tell me
it's a usurface class, which doesn't mean anything to me, but I've not
gone digging into microsoft's programmer's reference just yet, so
perhaps that will give me more information.  It's actually handled by a
chat dll, not a full-blown program, which would seem to indicate it's an
api of some sort, and that should make it possible to do something with
it, even if steam doesn't actually want us doing something with it. :)  
If I can get the dll name (again, had it, but didn't copy it, so lost
it), I can use a program to show me all the dll information, including
classes, variables, and so on, so even if we can't use the brainblast
chat itself, it may make it possible to write one that is accessible.  
Hope this stuff means something to someone else without having to dig
through ms docs, but if not, I'll see what I can find out.

On 4/6/2017 5:43 AM, James Scholes wrote:

> Travis Siegel wrote:
>> It is plain text, but NVDA thinks there's nothing on the screen, it just
>> tells me blank.  There should be some way for me to tell NVDA it's a
>> text area, but I wouldn't know how to do that
> This is a common misconception about creating NVDA add-ons,
> unfortunately.  Generally, NVDA is very good at working out what to do
> with a control, even ones which have accessibility problems.  That's not
> to say that there aren't times when it needs a helping hand, but it's
> very rare that simply telling NVDA to look at a control in a different
> way will make it accessible.
>
> I'm still not entirely clear, though.  Are you saying that NVDA can read
> the chat text/history with screen review or similar?  Or that the window
> is completely blank and there's no way to get access to it at all?


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

James Scholes
I think you're overthinking my question, because despite all the
information in this email, you still haven't really answered it.  Can
you read the information in the GUI or not with NVDA?  Can you interface
with, and use in any meaningful fashion, the chat interface that you're
trying to make accessible.  Investigating DLLs and what-have-you might
have a place, but that should always be the first question you answer.
--
James Scholes
http://twitter.com/JamesScholes

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

Travis Siegel
If I could see the text, then I wouldn't need to ask about making the
damned thing accessible now would I?



On 4/9/2017 1:53 PM, James Scholes wrote:
> I think you're overthinking my question, because despite all the
> information in this email, you still haven't really answered it.  Can
> you read the information in the GUI or not with NVDA?  Can you interface
> with, and use in any meaningful fashion, the chat interface that you're
> trying to make accessible.  Investigating DLLs and what-have-you might
> have a place, but that should always be the first question you answer.


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: first attempt to make a program accessible

James Scholes
Travis Siegel wrote:
> If I could see the text, then I wouldn't need to ask about making the
> damned thing accessible now would I?

That's not what I meant.  There's a big difference between being able to
read some text using object navigation, screen review or some other
cumbersome method, verses being able to conveniently review it with the
arrow keys or similar.  For a chat program, I would probably consider
the text to be inaccessible even if it was readable by NVDA, if the
method required to review it slowed you down or otherwise impacted your
productivity.

If the text is not visible at all, i.e. if the window is completely
blank as far as NVDA is concerned, no matter which review mode you use
and even if you employ object navigation, then the application will be
orders of magnitude more difficult to make accessible.  There's a big
difference between taking some text that NVDA can already see and
fitting it into a box that a screen reader can understand better, and
somehow accessing text that is not reported via any accessibility APIs.

Hence why I was trying to establish the exact nature of the program's
inaccessibility without getting sidetracked by other details.
Unfortunately I know nothing about Steam or its chat component, so if a
custom solution is needed I won't be able to help further.  Best of luck
and do feel free to share your work or questions on the NVDA Add-Ons
mailing list also.
--
James Scholes
http://twitter.com/JamesScholes

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nvda-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/nvda-devel
Loading...