One of the my professional goals for 2010 is to improve the accessibility support of Check Off and Today. Martin Pilkington put the bug in my ear almost a year ago when he pledged to make all of his products accessible. Minim 2 is in fact one of the products I’ve been using as a reference during this process.
Unfortunately I discovered a pretty significant road block when working on improving Check Off’s accessibility. NSStatusItem, the class that inserts the check mark in the Mac’s menu bar, is not accessible via VoiceOver. Try it for yourself:
- Launch System Preferences -> Universal Access
- Turn on VoiceOver
- Hold down `Control-Option-m’ to access the menu bar via VoiceOver. You’ll be at the Apple menu.
- Press the Left and Right arrow keys to navigate between the File menus.
- Press `Control-Option-m’ again. If you have them, you’ll jump to the standard OS X menu items like Airport, battery status and the clock.
- Press `Control-Option-m’ again to access Spotlight’s menu.
Notice how VoiceOver skipped over your third-party menu items like Check Off, TextExpander or FastScripts? That’s not good. In essence there is no way for a user to get access to these menu items without using the mouse or establishing a hot key to toggle them.
The Apple menu extras get VoiceOver support due to them using the private NSMenuExtra class. Besides accessibility, NSMenuExtra items are draggable by holding down the Command key and moving them left or right. The disparities between NSStatusItem and NSMenuExtra were discussed back in the Jaguar and Panther eras, and sadly it doesn’t seem the two have moved any closer to being alike.
At this point, Check Off 4.1 will be fully accessible, save for the menu extra which is out of my hands. I would like to see Apple add accessibility support to the NSStatusItem class in a 10.6 point release, but I won’t hold my breath. If this is an issue for you as a developer or user, I encourage you to dupe this Radar bug.
- OpenRadar: OS X 10.5: Status Items created with NSStatusItem are not VoiceOver accessible
- rdar://5037324
Update: As Martin Pilkington pointed out, it’s actually NSStatusBar that isn’t accessible. Semantics aside, the issue remains as of Mac OS X 10.6.2.

