• 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 30
Xbmc not working for blind users.
Hi Peter,
It looks to me like XBMC is totally non-standard, but I could be wrong. Everything looks glossy and painted on and no standard windows elements are used as far as I can tell. Also, one problem I found with the remote software is that if XBMC throws a dialog box or a situation where you have to put something in an edit field the remote won't help you. The dialog box comes up and doesn't speak so you can't move forward from that point on. I really think the majority of the devs here agree that accessibility should be tackled but the priority of doing something about it is so below the radar that nobody has implemented anything yet. If I knew how to code I'd try to put some sort of accessible overlay into XBMC but unfortunately all I can do is relay my experiences with computers and hopefully some smart developer will take it upon themselves to do something. I wish I had better news for you regarding this but I don't. :-(
Setup is the biggest hurdle right now in XBMC for the visually impaired. Most of the interface can be accessed with a remote UI, ether from the web or from some other remote application, but settings is almost entirely inaccessible though these methods.

Then, as byron27 said, other interface elements are not currently communicated to remote UIs, such as pop-up windows. XBMC's windowing system is non-standard, in order to work cross-platform and due to the legacy code that it is built upon.

I think expanding the remote APIs for remote applications, to handle settings and full interface interaction, is the best way forward. It's also the most likely method to be taken up by a developer, as expanding those APIs has vast uses in many directions. It would basically work as a "drop-in" interface, so in the future XBMC could be ran without the "normal" UI, and instead be completely ran from alternative UIs, while still having the core features be consistent.
Perhaps having a 3rd party web based config maker that allows you to set up the remote configuration which can then be dropped in would be a solution. Blind people can't currently set up their own remote config as far as I know. This is one of the biggest hurdles right now. I like the idea of making a version of XBMC that relies on the remote API or a version of XBMC that is self voicing. Either of these would work. Also, it would be that big of a deal for us to alt-tab between a desktop remote app and XBMC at least in Windows. This way we can start a movie, and then alt-tab over to it so we and our families can watch it.
Does it mean I have no chance to at least get the remote functionality and web UI working? Might I be able to hack something into a config file somewhere?
I have briefly looked at json RPC API and I think there is a way to query for a curent window even for curent control. Besides the active controls which can be referenced this way there may even be static controls such as texts giving context sensitive help etc. Including popups this is another type of content that is most likelly not easily accessible.
I assumed the easiest way on getting to play with the JSON API would be by writing a simple addon in python. However the python transport does not support notifications so currently I have no idea how to detect current control changes. Polling for it constantly appears to be the worst thing I can think of.
I am still open to ideas


You can also manually go into the guisettings.xml file that is in the userdata folder (wiki). We don't normally recommend manually editing this file, but it is where all such settings are normally stored (except for a few others, also in the userdata folder, such as for individual add-on settings).

I think it's certainly possible to hack something together, but it will be a bit of a challenge until things like the JSON API is further along for things like settings and on-screen notifications.
ooops, this is really difficult. I have manually edited guisettings.xml to enable web server. I can load the web page, I can switch individual tabs e.g. remote, movies, music etc but I can do nothing. The remote on the web does not appear to be accessible via keyboard. It's most likelly operable using the mouse only. So unfortunatelly web UI access is not accessible enough to be usefull while setting XBMC up for the first time.
How about using crowdsourcing to fund a code project for all this?

I think that a "XBMC Disabled Accessible Framework and API extensions for the Blind and Hearing Impaired" initiative could make a great crowdfunding project on Bountysource or Kickstarter!

As XBMC is a non-profit project that almost solely consisting of volunteer developers who code for free in their spare time as a hobby, and as such they almost only work on larger sub-projects for XBMC if it involves something that they have a huge personal interest in, like functions that they themselves will actually would use on a daily basis. So it is then hard to see any developers who does not have a personal interest in this starting a such code project on their own.

I'm suggesting that XBMC Foundation could however maybe run a crowdfunding project on Bountysource / Kickstarter to collect enough money to hire a someone else to lay the groundwork code of a such Disabled Accessible Framework and API for XBMC. Either that or the money collected from a such crowdfunding project could be used to maybe contact one of their own developers on Team-XBMC to take time off from their normal day-job for a month or two in order to work full-time for a while to begin the groundwork for such a framework, or a chance for student developer(s) to get paid working on this over the summer, similar to Google Summer of Code.

You could still need several volunteers to coordinate a such project, but those volunteers would not have to be developers themselves, and they could both from Team-XBMC and the community, and I guess best would be if at least some of the volunteers was disabled to give more validity to the project. After all you are going to need a wide area of expertise, with existing Team-XBMC developers need to assist with setting a well-defined concrete goals, videographer with multimedia skills needs to shoot a superb video, legal advice to handle contractor developers, etc. and the loads of man-hours just for media communication and coordination of running a such public campaign on Bountysource / Kickstarter.

I'm sure that many non-disabled people in XBMC community would be happy to donate some cash or a such cause, and hopefully the existing commercial company XBMC sponsors would also be willing to donate some money for this cause, and the end result it might even benefit them commercially if a such framework makes it into XBMC.

Since the XBMC Foundation is a non-profit project donating money to a such project might even be a tax write-off as tax deductible for companies and others?

In any case, running such a campaign on Bountysource / Kickstarter for a good cause like adding Disabled Accessible Support could be great publicity for the XBMC project if it can get good media coverage, and might bring more new users and developers regardless of the outcome.
I am not sure if this idea falls outside of the general way of doing things at XBMC but I'd donate to the cause if they decided to go that route. The big catch is will this idea generate enough support to justify the effort of starting the Kickstarter. Judging by the lack of interaction on this forum I don't know if we'll make any headway or not. If we got enough traction to generate some funding that'd be really great! Thumbs up over here. :-)

I have family members with sight problems (including blindness) and think the problem may be split into the following pieces.

1) Event mirroring

It appears as if there is already and event server in XBMC that communicates with clients, remotely. What is required (which is not present currently) is for the even server to "echo/reply" to the client.

2) Alternate Text/Multi language
In the same way as HTML has an "<alt> tag, perhaps XBMC could adopt this. This would be a simple method of including "isolated text" which would probably present the correct information to screen readers and the like. By default this could be the normal screen information, but in principle, it could be finer tuned to provide an entirely alternate interface.

I am not an XBMC coder at all, but I have a coding background. Would it be possible to define for every visual element an "alt" tag and then have the event server simply(Huh) "echo" the value as a event?

Hence wherever the "active pointer" rested on the screen, a client would be able to request "echo" and the underlying object would present the "alt" tag.

This could be a very important feature for XBMC as it has a huge following and is an amazingly effective piece of software. To @byron27, possibly one of the reasons there is not much feedback is because even technically motivated people like myself, with family members having this disability, it is extremely difficult to contribute effectively without a considerable "Read in" time.

With the increasing age of the population, this disability will become ever more important.

Perhaps another way of looking at it is "hands free" mode, or "eyes free" mode. So you don't have to be disable to appreciate it...!!

To summarise I think many of the components are nearly there, but need a bit of focus to instantiate them.

I know I am not an expert but I still believe I might become a part of this at least to some extend. I am blind with some technical background. I do have basic knowledge of various platforms including windows and linux I have some preliminary coding skills mainly python and web scripting.
However I don't understand XBMC at all since I haven't yet figured out how I might be able to set it up.
I think croudsourcing and / or public campaign might be a good idea however still I believe we need at least some initial work to have done before initiating that. We should have good understanding on what we are going to do and how we would like to do that. We should have at least rough estimates what's needed etc because for now we are only speaking in verry general terms that we would like to have XBMC accessible.

I am trying to use the RPC API to retrieve current control via telnet. Did I miss read it because I am getting no output from this command
{"jsonrpc": "2.0", "method": "GUI.GetProperties", "params": {"Properties":["currentcontrol"]}}
The common method is via curl. There are examples about, but I find that unless I cut and paste them, the strings are hard to get right.

There are some examples here:

If I have helped you or increased your knowledge, click the 'thumbs up' button to give thanks :) (People with less than 20 posts won't see the "thumbs up" button.)
I think the command is correct because I can find no errors in the logs and other commands are working for me as well as I am receiving events such as on screen saver activate or deactivate. Do I need to gain certain privileges in order to be able to do this or what I might be doing wrong? Please can anyone try to run this command to see what might go wrong? Note I am getting no reply even no error message what so ever.

Thanks and greetings

(2014-02-03, 20:08)philxbmcfan Wrote: In the same way as HTML has an "<alt> tag, perhaps XBMC could adopt this. This would be a simple method of including "isolated text" which would probably present the correct information to screen readers and the like. By default this could be the normal screen information, but in principle, it could be finer tuned to provide an entirely alternate interface.
Such <alt> tags could possibly also open up additional opportunities for voice command API for voice control of XBMC too.

That could be a very cool accessible feature even for non-disabled people too in order to voice control XBMC, which could as such act to motivate more developers to join this cause.

There are several already several software and products our there for speech recognition and voice control for multimedia, however personally I'm here specifically imagining using the Ubi ( http://theubi.com ) always-on voice-activated computer to control XBMC as it seem more user-friendly that most other devices.

Checkout quick introduction video for the Ubi here on Kickstarter:

You can just imagine the Ubi as a cheap and simple way to get natural voice control commands similar to that of Tony Stark's JARVIS (J.A.R.V.I.S.) artificially intelligent butler computer in the Iron Man movies


Sorry if I want too off-topic here with the voice command API idea as an additional accessible feature for XBMC
I have finally figured that out. I can get the current window and current control by calling
Now the exercise is to find out how to enable notifications and look for a notification to call this on so I don't have to be crazy and poll for this kind of info. With this working I am afraid setting XBMC up might be a bit awkvard but browsing and playing the library should be possible. If you are reading this and have better experiences and / or understanding of this API can you please help me? For a skilled coder this might really be a simple thing to do I hope.

Edit: oops what's the ID in that request. I think it changes and where to get it.

Edit2: I am now also looking at python scripts / addons development. It appears it is possible to retrieve current window via python library. Also it is possible to query the parent window and left, up, right down in the navigation direction. The UI elements inherit from the Control class, and the classes representing concrete UI elements include ControlButton, ControlCheckMark, ControlEdit etc. Pure theoretically speaking if there is a way to have a plugin running in background in its own thread, responding to the input events, checking, traversing and inspecting XBMC windows using this API we might be able to write something that would resemble a screen reader for XBMC. I would really like to play with this more. Can I somehow create at least basic script / plugin which will run all the time or run at least when I press a keystroke?

Edit3: umm. It appears it is not as easy as it looked initially. I am unable to figure out if it is at all possible to hook into a global events. I know there is a way to respond to events in my own window, however for screen reader like functionality we need to be able to react when focus changes, when properties of a control change etc.

Edit4: one more issue. From python it appears it is only possible to access UI elements also created in python. It's discussed here with other issues usefull for what we are after.

Edit5: I have looked at the RPC API again as with that I had already been able to at least feel how the navigation works. I have nearly added an audio source to my running XBMC by periodically manually polling for the current control via telnet. Unfortunatelly this is not sufficient for a comfortable XBMC experience because it only communicates control labels. Also neither in python nor with this API we do have a kind of events / notifications we can process so without the help from the core team we are unlikelly to be able to move forward I am afraid.

Edit6: Okay I have created a simple python script which will periodically check the current control using xbmcjson python library and feed that to the NVDA screen reader on windows and speech-dispatcher on linux. For adding sources it's sufficient. For controlling the XBMC I will have a look at remote clients for IOS and Android. I don't think this is even close to a proper solution so I have nothing to post.

Edit7: Did a bit more reading and here are updated ideas:
- It is possible to create service type addons which will run automagically at xbmc start. I might be able to create addons in python that will provide functionality to call native tts according to the platform xbmc is running on. E.G. it will do text to speech via NVDA or via Sapi5 on Windows and there might be other addons with the same functionality which will use speech-dispatcher for TTS output on linux or even self-contained addon which will use eSpeak directly on open elec or other such enviromments. I am not targetting IOS, Android and xbox at this time.
- Since we have no events to bind to we might be able to provide alternate keyboard and remote control commands for navigating the XBMC UI. These commands will call the original navigation commands e.g. left, up, right, down, page up, page down etc and they will also retrieve current control and send that for TTS output by the service addons suggested above. I need to figure out if it is possible to include the keybindings within the addon or if it is possible to include additional key mappings. We might either be able to come up with alternate keyboard commands e.g. shift+arrow keys instead of plain arrow keys or we might be able to provide turn on / turn off screen reader functionality which will exchange the key mappings. I am afraid this leaves issues with touch support which will require implementing platform specific accessibility support or rewriting touch input support to provide seperate screen reader like experience.

Edit8: okay I have verified I can just drop in user modified keyboard layout calling parts of my addon. Also I have learned how to package python libraries. I should stop writing these reports and get to some coding.
Woah, Peter... I was not aware of all of the progress you've made toward accessibility since I never got an e-mail regarding your edited post... however I am happy to see someone actively trying to figure this out. I wish someone from the core team would help you out though. I just wanted to bump this post for those who depend on the new post alert in case they didn't know there was more progress on this. Thanks man!
  • 1
  • 2
  • 3
  • 4(current)
  • 5
  • 6
  • 30

Logout Mark Read Team Forum Stats Members Help
Xbmc not working for blind users.5
This forum uses Lukasz Tkacz MyBB addons.