|
From: Kevin W. <kw...@co...> - 2020-03-23 12:12:16
|
A feature that is requested from time to time is to make Tk accessible for screen readers for users who are blind. The last ticket I found on this was https://core.tcl-lang.org/tk/tktview/0e294d9604b4196b9ca41451400730063a659c70, from 2016. I've looked into this a bit and it seems to be a massive undertaking. For it to work cross-platform, it would require access to three platform-specific API's, and would likely require an internal API as well to provide some abstraction. Here are some some rough notes: 1. On Linux, it would require implementing ATK, the Gnome Accessibility Toolkit, documented at https://en.wikipedia.org/wiki/Accessibility_Toolkit and https://developer.gnome.org/atk/. This would implement a "server-side" API that Tk would provide, and would be bridged on Gnome by another library (at-spi) that the Orca screen reader makes use of. ATK supposedly provides a series of abstract header files that would allow other libraries to implement the API - this might avoid license issues that would otherwise be present (Gnome is LGPL, I believe). 2. On Windows, the iaccessible2 API (documented at https://en.wikipedia.org/wiki/IAccessible2 and https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/) provides a BSD-licensed layer over Microsoft's platform-native API, designed to provide an API similar to ATK to make cross-platform accessibility easier to achieve. 3. On macOS, the NSAccessibility API (documented at https://developer.apple.com/library/archive/documentation/Accessibility/Conceptual/AccessibilityMacOSX/index.html#//apple_ref/doc/uid/TP40001078-CH254-SW1 and https://developer.apple.com/documentation/appkit/accessibility/integrating_accessibility_into_your_app?language=objc) provides a complete set of tools for making apps accessible on the Mac. OpenOffice's internal accessibility API, UNO, provides a model of how a cross-platform accessibility API can be implemented. Recent versions of OO use the Apache license, which would work just fine with Tcl/Tk's license. The UNO API is bridged to ATK on Linux, Java's Accessibility API on Windows, and NSAccessibility on Mac. Of course UNO's specifics could not be ported to Tk, but the API itself might provide an example structure for Tk. I've been mulling taking on this project, as it is the largest part of a modern UI system that Tk lacks compared to other toolkits. I am estimating a couple of years of work, though, and that is giving me pause. Accessibility in OO was developed by an entire team at Sun before it was disbanded, not a single person. Is there any interest in the community for this type of project? --Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |