I attended a few get-togethers with some Assistive Technology vendors a while back when they were on campus for an Accessibility conference. While eating dinner with one particular AT vendor, I had asked him what we, Visual Studio , could do to improve our Assistive Technology compatibility story. Next thing I knew, I was writing frantically on paper usually used for receipts.
- Consider allowing Graphics to take focus. If there s a control the mouse user can interact with, the keyboard user will most likely want to interact with that control in a similar fashion. Sure, there are workarounds, like telling the user to go to the menus to find the same functionality. But, depending on what the control does, it could mean a lot of extra steps, especially if the control is frequently used.
- All graphics should have an AA object. If it is too costly for the graphic to have an AA object, at least draw it as a bitmap. Never just paint graphics. These are black holes to ATs.
- Graphics should have a bitmap associated with it, especially for those that don t have AA objects or are just bitmaps. If the graphic is painted, it is critical that it have a tooltip. This at least gives ATs a chance to identify the graphic.
- Correct cursor location is returned. For example, the (x,y) screen coordinates for an italicized cursor is at the baseline. I was told by the AT vendor that Word does not return Italicized cursor coordinates correctly, but I have not investigated this issue to confirm this at this time.
- After selecting text, the cursor must not disappear. The cursor must continue to blink based on OS Settings. I was told by the AT vendor that Notepad does this correctly; Word does not, but I have not investigated this issue to confirm this at this time. ATs may have to write special logic to determine cursor location.
- Use win32 API DrawFocusRect, even if you’ve drawn your own focus rect. I was told by the AT Vendor that there s a parameter you can pass in to draw the focus rectangle as invisible, but I didn t see it in the docs. It doesn t mean that it isn t possible. The AT s Off Screen Model goes by the focus rectangle drawn by DrawFocusRect, so if the AT can t find focus, although it is visible on the screen, this is the most likely cause.