Monotonous.org

Eitan’s Pitch

Introducing Pyia

July 1st, 2008 Filed under: Accessibility, Software, Technology by Eitan

Last week I was doing my best to dive into the wonderful world of Windows accessibility. So to flatten the curve, I decided to take shot at making a lightweight Python MSAA client library, Pyia.

It is heavily inspired by pyatspi’s class mixins. pyOrbit made it very easy to do this in pyatspi, making CORBA friendly and Pythonic. Comtypes, does the same in Windows, making COM cool as a cucumber.

Accessible objects emulate containers for easy access to children nodes. Also notice a few convienient methods, like getDesktop which returns the desktop client. Also getStateName will return a human readable list of states rather than a bitmask.

>>> import pyia
>>> desktop = pyia.getDesktop()
>>> for window in desktop:
        if not window.accState(0) & \
          pyia.STATE_SYSTEM_INVISIBLE:
          print window
 
[window | ]
[window | Python Shell]
[window | Mozilla Firefox Start Page - Mozilla Firefox]
[window | Program Manager]
 
>>> desktop[14].accStateName()
u'unavailable invisible'

This might be a bad idea, but I added some AT-SPI concepts, for example a registry, where you connect event callbacks. Also, events are wrapped in structures with a “source” field that is a reference to the accessible that is responsible for the event. There is no extra wire traffic because the reference is not retrieved until the source field is either explicitly called, or the event is printed (converted to a string).

>>> import pyia
>>> def event_cb(event):
        print event
 
>>> pyia.Registry.registerEventListener(
        event_cb, pyia.EVENT_OBJECT_FOCUS)
>>> pyia.Registry.start()
gainFocus
        source: [client | Mozilla Firefox Start Page - Mozilla Firefox]
        window: 524618
        thread: 568
        tstamp: 14692927
gainFocus
        source: [client | Python Shell]
        window: 1573178
        thread: 352
        tstamp: 14694599
>>>

You could try this stuff out by checking it out from Github.
If that is too much overhead, here is a binary Windows installer.

You will need the comtypes Python module.

6 Comments »

Orca Doings

May 16th, 2008 Filed under: Accessibility by Eitan

This last couple of months has been characterized by random bursts of productivity. After I reached all of the deliverables from my last Mozilla Foundation grant, I decided to give it another liberal reinterpretation, and have just been picking up different bits and pieces of Orca, and found stuff that interested me to work on.

Contracted Braille

This work has mostly been completed in early march. Since we are depending on an external library, liblouis, one of the most important tasks was to get liblouis into a shape that could allow it to be shipped in major distros. All sorts of distros arose, from packaging to licensing. Luckily, John Boyer has been extremely helpful, and thanks to the ViewPlus folks, we were able to get liblouis re-licensed as LGPL 3. I am maintaining liblouis and liblouisxml “forks” that are autotooled and easy to install and package for distributions. Hopefully the main development and releases will be on these autotooled versions, making users lives easier, and getting distributions to package it.

Firefox Braille Support

When I was working on the contracted braille bit, I noticed that cursor routing was not yet implemented in our Firefox support. I got basic braille display cursor routing support to work in Firefox, and also link following support. A braille display user does not have to take her fingers off the braille display to surf the web. This is neat.

Mouse Review

When I was playing with a friend’s Wii, I noticed how cool and easy it is to point and click with the controller to type in your name on an on-screen keyboard from across the room. It was easy because of the “resistance” the controller’s motor emitted. This made me think of how we could apply that in Orca: with one of those vibrating gaming mice, and with speaking the current component we could allow low-vision (maybe even blind?) users get a better picture of the graphical interface, and allow folks to use the mouse for those tasks that have no keyboard access. I thought I deserved a Nobel prize.

When I got to CSUN, I discovered that this is actually not a new idea at all. Some products already do that. Even NVDA does it by default. Mike said it would be a useful feature, so I hacked away during CSUN, and had something to show in the final days. Mouse review mode is available in development versions of Orca today, and will be in our 2.24 release.

Script Support Refactor

One of the stuff that I have been thinking about since I got involved in Orca is how do we add support for non-application customizations. For example, today it is possible for core or third party developers to extend Orca and override the default behavior and allow better access for specific applications like Evolution. We needed a way to support similar scripts, but for web applications like GMail too. When I took a look at how the source tree looked, I realized that there is an opportunity for a refactor. Last July just before GUADEC I got so excited about refactoring Orca’s codebase, that I even drew up pretty UML diagrams and attached them to a bug report. I met Willie Walker for the first time in GUADEC. He apologized for dousing my enthusiasm, but there were bigger tasks at the time than large-scale cleanups. Before CSUN we re-targeted web application scripting as a certain priority, and my refactor ideas were finally heard! The entire team stayed supportive and kept an open mind while I spliced files and created a lot of new directories. The diagram below is the UML I made last year.

This is a UML diagram that I sketched up last year.

2 Comments »

CSUN Fun

March 14th, 2008 Filed under: Accessibility, Personal, Technology by Eitan

I spent most of this week at CSUN. It’s been fun, I am really happy to finally meet a bunch of people, and to meet new folks. Manning the Mozilla booth is easy: every passerby is a grateful user. A lot of subdued dogs.

A companion dog taking a rest

Update: I Made that sound like past tense. I still am at CSUN, and I will be here till tomorrow.

1 Comment »

Accerciser: The First GNOME Module

March 10th, 2008 Filed under: Accessibility by Eitan

accerciser.pngNo, really. Accerciser is always listed first, not sure why. I think it has something to do with it being so good.

But seriuosly, I just rolled the tarballs for the 1.2.0 release, our second major release. You could get them here.

Besides the translation effort, which was awesome, as usual. This release saw plenty of contributions, here is an incomplete list of helpful folks, thank you!

  • Brian G. Merrell
  • Claude Paroz
  • Frederic Peters
  • Peter Parente
  • Rich Burridge
  • Scott Haeger
  • Wouter Bolsterlee

2 Comments »

Accessibility in Linux Journal

February 19th, 2008 Filed under: Accessibility, Personal, Software, Technology by Eitan

As Will pointed out, the latest issue of Linux Journal is focusing on the desktop, with not one, but two articles devoted to desktop accessibility! If I read the contract that I signed hastily right, I keep the copyright for the article, so I could post it here.

No Comments »

  • Photos

  • Categories

  • Archives